Burada SGen ile ilgili diğer birkaç soruya baktım ve cevapları geçerli değil ya da cevapları benim için düzeltmiyor. Bu sorunu gidermek için birkaç SDK yükledim. Referans türleri değiştirilmemelidir, çünkü bu bir problemdir. Bir kez öneri SGen.exe C:\Windows\Microsoft.NET\Framework\v3.5
klasörüne koymak, ancak bu sorun olmadığını kutunun üzerinde yapılmış değil. Bu senaryoda, SGen.exe
aslında var ve olması gereken yerde doğru, ancak MSBuild hala bazı nedenlerle bulmakta sorunlar yaşıyor!MSBuild, bir çözüm derlerken SGen'i bulamıyor
Geçmiş:
Biz bizim kurar otomatik bir NAnt komut dosyası var. Bu senaryoda, NAnt, MSBuild çağırıyor ve MSBuild, SGen'i bulamadığı iddiasında hata üretiyor. Proje .NET 3.5 tabanlı. Komut dosyasının mükemmel çalıştığı birincil dev ortamım (64 bit Vista Ultimate) var ve bunu bir VM'de (64 bit Win 7 Ultimate) çoğaltmaya çalışıyorum. Herşeyin iyi gitmesi gereken noktaya her şeye sahip olduğumu düşünüyorum, ancak Win7 kutusunda bu başarısız oluyor (Vista kutusunda mükemmel çalışıyor).
İki kutu arasında bazı karşılaştırmalar yaptım ve bu bakımdan aynıdır, ama yine de başarısız oluyor. Örneğin, her iki makinede HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
adlı kullanıcının sdkInstallRootv2.0
değeri C:\Program Files\Microsoft.NET\SDK\v2.0 64bit\
olarak ayarlanmıştır. Her iki makinede de SGen.exe
, bu yolun bin
alt dizinindedir.
NAnt Senaryo: burada yanlış neden olduğunu ne yapıyorum
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 HALA SGEN bulamadık olmak: Ben olsun
<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>
hata mesajı şudur?
Açıklama için, 3.5 ve 2.0 SDK'larını yükledim ve bunların hiçbiri bunun davranışını değiştirmedi. – Jaxidian
Zaten çözümünüzü MSBuild'e (NAnt tarafından çağrılmadan) denediniz mi? – Filburt
Yup, aynı sorun. – Jaxidian