从VS2012升级到VS2013后SGEN不起作用



当我在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)"

最新更新