先附上错误截图
问题前提:
公司项目中通过命令行将assembly.cs文件的版本号修改为当前svn的版本号,以此可以精确判断出各个客户所用的dll是哪个svn的实际版本。
问题描述:
操作系统:windows server 2008 R2
VS版本:Visual Studio Ultimate 2013
出问题场景1、在我本机没问题,但是在同时相同环境下的同事电脑上,均提示:命令已退出,代码为1
出问题场景2、昨天买了块英特尔的固态硬盘装在自己电脑上做了双系统,然后安装了Windows 10 Enterprise LTSC 2019 (x64) 和 Visual Studio Ultimate 2013,竟然也出现了这个问题
解决思路:
在问题之初,在网上通过百度、google,在csdn、博客园、Stack Overflow等网站上均未找到解决方案,后来在控制台项目中测试了简单的命令如:start cmd.exe,仍然是这个问题,请各位大佬帮忙看一下,分享一下解决思路,感谢!
命令已退出,代码为1
表示这个命令没有成功执行,没有成功执行有很多种原因,比如命令根本不存在或者找不到命令。对于无法执行 SubWCRev.exe ,建议检查一下 PATH
环境变量中没有配置 SubWCRev.exe 所在的路径
如果 PATH
环境变量配置对了,打开命令行,无论在哪个路径下都可以正常运行 SubWCRev 命令
@dudu: 谢谢大佬,不过命令是正确的,在cmd.exe里面也可以成功执行,我这边是同一台电脑装了双系统,server2008 R2可以,后来装了SSD的win10就提示这个错误了,其他同事的环境server2008R2也是这个错误
所以后来担心是环境变量等一系列配置的原因导致的,所以重新创建了一个空的控制台项目来测试基本的命令:start cmd.exe,来打开命令行窗口
@依旧寒风: 建议修改一下 visual studio 的 build 日志级别看一下出错时的详细相关信息
@dudu: 好的,明天到公司试下看看,多谢大佬!
@dudu: 大佬,其中一个同事是这样的问题,如下图所示,看起来像是环境变量没有设置导致命令无法执行,但是在上图的目录或者任意一个地方打开cmd.exe都是可以执行的,烦请大佬再帮忙看下,感谢!
@依旧寒风: 试试把 start cmd.exe
改为 echo %PATH%
看会输出什么
@dudu:
大佬,还是返回代码1,build里面的诊断信息还是同样的问题
@依旧寒风: 发现了问题所在,不管输入什么命令,msbuild 都把C:\Users\Administrator\AppData\Local\Temp
当作命令来执行
@dudu: 没错,我先顺着这个思路找原因,实在不行就修复一下vs看看
@依旧寒风: 在 Microsoft.Common.CurrentVersion.targets 中对应的 Target 是:
<Target
Name="PreBuildEvent"
Condition="'$(PreBuildEvent)'!=''"
DependsOnTargets="$(PreBuildEventDependsOn)">
<Exec WorkingDirectory="$(OutDir)" Command="$(PreBuildEvent)" />
</Target>
@dudu: 没错,一模一样
@依旧寒风: VS 用的是哪个版本?
@dudu: Visual Studio Ultimate 2013
@依旧寒风: 建议安装 VS2017 试试,VS2017 不会影响已经安装的 VS2013
@dudu: 好的,我先尝试修复一下2013,然后如果还不行,就装2017试试看,谢谢大佬!
@dudu: 今天准备帮同事修复2013,才发现是Visual Studio Ultimate 2013 with Blend这个版本的,卸载重新安装的Visual Studio Ultimate 2013 Update3,现已正常。
谢谢大佬的支持。
直接写 cmd.exe 不行吗?
– 不如隐茶去 5年前@不如隐茶去: 是这样的,我们公司只有我电脑可以正常使用,其他同事都有这样的问题,节前我装了win10之后,用同样的vs安装包装完之后也出现了这个问题,怀疑是软件环境导致的,但是具体不太清楚是什么原因。
– 依旧寒风 5年前
– dudu 5年前start
是什么命令?@dudu: 没想到能受到大佬关注,感谢!
– 依旧寒风 5年前我们原本是使用SubWCRev.exe来给dll在生成成功之后修改版本号的,然后我们公司只有个别同事可以正常使用预先生成事件命令行,其他同事都是提示上图中的错误,通过网上查找之后也没有找到可行的解决方案,后来我就试了一下创建一个控制台空项目,然后再执行一个简单的命令如:start cmd.exe,原本执行不了SubWCRev.exe的仍然不行,所以排除了SubWCRev.exe这个命令行的问题,应该是自身环境问题,但是网上没找到解决方案又不清楚预先生成事件命令行的原理,感觉无从下手了