我在这里看了几个与SGen相关的其他问题,他们的答案不适用,或者他们的答案不适合我。我安装了几个SDK来解决这个问题没有运气。不应更改引用类型,因为这是唯一存在问题的地方。一旦建议将SGen.exe放入C:\Windows\Microsoft.NET\Framework\v3.5
文件夹,但这不是在没有问题的框中完成的。在这种情况下,SGen.exe
实际上存在并且正确的位置,但是由于某种原因,MSBuild仍然存在查找问题的问题!
背景
我们有一个NAnt脚本可以自动化我们的构建。在这种情况下,NAnt正在调用MSBuild,MSBuild正在生成声称无法找到SGen的错误。该项目基于.NET 3.5。我有我的主要开发环境(64位Vista Ultimate),其中脚本完美运行,我试图在VM(64位Win 7旗舰版)中复制它。我认为我已经掌握了一切我应该很好的东西,但这在Win7盒子上失败了(在Vista盒子上完美运行)。
我已经在两个框之间进行了一些比较,并且它们在这方面看起来相同,但它仍然失败。例如,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
的{{1}}值在两台计算机上都设置为sdkInstallRootv2.0
。在这两台计算机中,C:\Program Files\Microsoft.NET\SDK\v2.0 64bit\
位于该路径的SGen.exe
子目录中。
NAnt脚本:
bin
我得到的错误信息是:
<target name="report-installer" depends="fail-if-environment-not-set">
<exec program="MSBuild.exe" basedir="${framework35.directory}">
<arg value="${tools.directory.current}\ReportInstaller\ReportInstaller.sln" />
<arg value="/p:Configuration=${buildconfiguration.current}" />
</exec>
</target>
我在这里做错了导致MSBuild无法找到SGen?
答案 0 :(得分:17)
这似乎是我最近遇到的一个常见问题。
在“构建”标签上的项目属性中,将“生成序列化程序集”选项从“自动”设置为“关闭”。
<强>更新强>
如果您还没有尝试过,请确保为发布和调试配置设置了<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
。
答案 1 :(得分:0)
我认为有一个解决方案没有安装旧版本VS
的痛苦请尝试以下方法:
键: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ V2.0 \
字符串值: 名称:InstallationFolder 值(默认值):C:\ Program Files(x86)\ Microsoft.NET \ SDK \ v2.0 \
或将此代码保存为.reg文件并执行:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0]
"InstallationFolder"="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\v2.0
答案 2 :(得分:0)
在&#34; Build&#34;的项目属性中;选项卡设置选项&#34;生成序列化程序集&#34;来自&#34; Auto&#34;到&#34;关&#34;。
它解决了我的问题。
答案 3 :(得分:-2)
我不知道发生了什么或为什么会发生这种情况,但我为解决这个问题所做的是安装Visual Studio 2005.我已经安装了.NET 2.0 SDK以及.NET 3.5 SDK而没有运气但是使用Visual Studio 2005安装程序解决了这个问题。这是一个可怕的解决方案,但它仍然是一个解决方案。
希望我们能尽快迁移到.NET 4.0并完成摆脱.NET 2.0及其问题。