编译解决方案时,MSBuild无法找到SGen

时间:2010-04-08 17:04:59

标签: .net msbuild 64-bit nant sgen

我在这里看了几个与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?

4 个答案:

答案 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及其问题。