MSBuild не может найти SGen при компиляции решения

Я посмотрел на несколько других SGen-связанных вопросов на здесь, и или их ответы не применяются или их ответы, не фиксируют это для меня. Я установил несколько SDKs для устранения этой проблемы без удачи. Ссылочные типы не должны быть изменены, так как это - единственное место, это - проблема. После того как предложение состоит в том, чтобы поместить SGen.exe в C:\Windows\Microsoft.NET\Framework\v3.5 папка, но это не было сделано на поле, где это не проблема. В этом сценарии, SGen.exe на самом деле существует и является правильным, где это, как предполагается, находится, но MSBuild все еще имеет проблемы с нахождением его по некоторым причинам!

Фон:

У нас есть сценарий NAnt, который автоматизирует наши сборки. В этом сценарии NAnt называет MSBuild, и MSBuild генерирует ошибку, утверждая не мочь найти SGen. Проектом является.NET, на основе 3.5. У меня есть своя основная dev среда (64-разрядная Окончательная Vista), где сценарий работает отлично, и я пытаюсь копировать его в VM (64-разрядный Окончательный Win 7). Я ДУМАЮ, что у меня есть все до такой степени, когда, что я должен быть хорошим для хождения, но это перестало работать на поле Win7 (работы отлично над полем Vista).

Я сделал некоторые сравнения между этими двумя полями, и они оба выглядят идентичными в этом отношении, но это все еще перестало работать. Например, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework sdkInstallRootv2.0 значение установлено к C:\Program Files\Microsoft.NET\SDK\v2.0 64bit\ на обеих машинах. В обеих машинах, SGen.exe находится в том пути bin подкаталог.

Сценарий NAnt:

<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>

Сообщение об ошибке, которое я получаю, является этим:

report-installer:

     [exec] Microsoft (R) Build Engine Version 3.5.30729.4926
     [exec] [Microsoft .NET Framework, Version 2.0.50727.4927]
     [exec] Copyright (C) Microsoft Corporation 2007. All rights reserved.
     [exec]
     [exec] Build started 4/8/2010 11:28:23 AM.
     [exec] Project "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.sln" on node 0 (default targets).
     [exec]   Building solution configuration "Release|Any CPU".
     [exec] Project "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.sln" (1) is building "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.csproj" (2) on node 0 (default targets).
     [exec]   Could not locate the .NET Framework SDK.  The task is looking for the path to the .NET Framework SDK at the location specified in the SDKInstallRootv2.0 value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework.  You may be able to solve the problem by doing one of the following:  1.) Install the .NET Framework SDK.  2.) Manually set the above registry key to the correct location.
     [exec] CoreCompile:
     [exec] Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
     [exec] C:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1902,9): error MSB3091: Task failed because "sgen.exe" was not found, or the .NET Framework SDK v2.0 is not installed.  The task is looking for "sgen.exe" in the "bin" subdirectory beneath the location specified in the SDKInstallRootv2.0 value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework. You may be able to solve the problem by doing one of the following:  1.) Install the .NET Framework SDK v2.0.  2.) Manually set the above registry key to the correct location.  3.) Pass the correct location into the "ToolPath" parameter of the task.
     [exec] Done Building Project "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.csproj" (default targets) -- FAILED.
     [exec] Done Building Project "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.sln" (default targets) -- FAILED.
     [exec]
     [exec] Build FAILED.
     [exec]
     [exec] "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.sln" (default target) (1) ->
     [exec] "C:\Projects\Production\Tools\ReportInstaller\ReportInstaller.csproj" (default target) (2) ->
     [exec] (GenerateSerializationAssemblies target) ->
     [exec]   C:\Windows\Microsoft.NET\Framework\v2.0.50727\Microsoft.Common.targets(1902,9): error MSB3091: Task failed because "sgen.exe" was not found, or the .NET Framework SDK v2.0 is not installed.  The task is looking for "sgen.exe" in the "bin" subdirectory beneath the location specified in the SDKInstallRootv2.0 value of the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework.  You may be able to solve the problem by doing one of the following:  1.) Install the .NET Framework SDK v2.0.  2.) Manually set the above registry key to the correct location.  3.) Pass the correct location into the "ToolPath" parameter of the task.
     [exec]
     [exec]     0 Warning(s)
     [exec]     1 Error(s)
     [exec]
     [exec] Time Elapsed 00:00:00.24
     [call] C:\Projects\Production\Source\reports.build(15,4):
     [call] External Program Failed: C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe (return code was 1)

Что я делаю неправильно здесь, который заставляет MSBuild ВСЕ ЕЩЕ не мочь найти SGen?

7
задан Jaxidian 8 April 2010 в 17:04
поделиться

2 ответа

Это обычная проблема, с которой я столкнулся в последнее время.

В свойствах проекта на вкладке «Сборка» установите для параметра « Создать сборку сериализации » значение «Авто» на « Выкл. ».


update

Если вы еще не пробовали, убедитесь, что параметр Off установлен для конфигурации Release AND Debug.

17
ответ дан 6 December 2019 в 14:02
поделиться

Я не уверен, что и почему это происходило, но что я сделал, чтобы обойти это, так это установил Visual Studio 2005. Я уже установил. NET 2.0 SDK, а также .NET 3.5 SDK безуспешно, но что-то с установщиком Visual Studio 2005 решило эту проблему для меня. Это УЖАСНОЕ решение, но, тем не менее, решение было.

Надеюсь, что скоро мы сможем перейти на .NET 4.0 и полностью избавиться от .NET 2.0 и связанных с ним проблем.

-2
ответ дан 6 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: