当我在VS2013(版本12.0.21005.1 REL)下编译我的c#解决方案时,它无法构建部分项目,并显示错误消息:
错误32命令"C:\Program Files(x86)\Microsoft SDKs\Windows\v8.1A\Bin\NETFX 4.0 Tools\sgen.exe"/a:"Project.dll"/f/v"退出,代码为3。项目
生成后事件:"$(FrameworkSDKDir)\Bin\NETFX 4.0 Tools\sgen.exe"/a:"$(TargetPath)"/f/v
事实上,文件夹"C:\Program Files(x86)\Microsoft SDKs\Windows\v8.1A\Bin\NETFX 4.0 Tools"不存在:"\Bin"仅包含文件夹"NETFX 4.5.1 Tools"。
项目的目标框架:".NET framework 4"。
解决方案(由Microsoft提供):
最佳做法是使用$(SDK40ToolsPath)属性来获取.NET SDK二进制文件路径,而不是使用$(FrameworkSDKDir)属性。使用"$(SDK40ToolsPath)sgen.exe"应该在Visual Studio 2013及早期版本中工作。
VS宏中的$(FrameworkSDKDir)值(生成后事件)引用了无效路径
我今天遇到了这个错误。我正在进行的项目目前正在VS2012中维护。在我的新安装中,我有VS2013(首先安装)和VS2012。我在VS2013中得到了这个错误构建。
问题是运行sgen.exe的文件夹在我的计算机上不存在。在我的机器上,我有$(FrameworkSDKDir)BinNETFX 4.5.1 Tools
文件夹,但没有$(FrameworkSDKDir)BinNETFX 4.0 Tools
文件夹。
为了解决这个问题,我在父源代码管理控制器中创建了一个NETFX 4.0 Tools\并将其签入。这样,引用就不再依赖于每个用户的机器。我的后期构建现在是"$SolutionDir....NETFX 4.0 Toolssgen.exe" /force "$(TargetPath)"