2010-04-08 29 views
6

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?

+0

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

+0

Zaten çözümünüzü MSBuild'e (NAnt tarafından çağrılmadan) denediniz mi? – Filburt

+0

Yup, aynı sorun. – Jaxidian

cevap

-2

Bunun ne olduğundan veya niçin olduğundan emin değilim, ancak bununla ilgili yaptığım şey Visual Studio 2005'i yüklemek oldu. .NET 2.0 SDK'nın yanı sıra .NET 3.5 SDK'yı hiç şansla yüklemiştim Ancak Visual Studio 2005 yükleyicisi ile bir şey benim için bu sorunu çözdü. Bu KORKUNÇ bir çözümdür, ancak yine de bir çözümdür.

Umarız .NET 4.0'a geçebilir ve .NET 2.0 ve sorunlarından kurtulabiliriz.

16

Bu günlerde karşılaştığım yaygın bir sorun gibi görünüyor. "İnşa" sekmesine proje özelliklerinde

seçeneğini " Kapalı" "Otomatik" dan "seri hale getirme derlemesi üret" olarak ayarlayın. Zaten denemediyseniz varsa


güncelleme

, <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> Yayın VE hata ayıklama yapılandırma için ayarlanmış olduğundan emin olun.

+0

Bunu denedim ve davranışta bir değişiklik olmadı. Yapım komut dosyamın bu kısmı tek projeli bir çözümdür ve '.csproj' dosyasına baktım ve bu ayarı değiştirdiğim zamandan Kapalı' içeriyor, ancak aynı hatayı alıyorum. – Jaxidian

+0

Güncellemenize yanıt vermek için: Bunu düşündüm ve bu bir sorun değildi. – Jaxidian

+1

Teşekkürler Filburt, bu benim için çalışıyor, SerializationAssemblies'a ihtiyacım olursa ne yapacağımı bilmiyorum. : -] – Myster

0

Ben

aşağıdaki deneyin VS eski sürümlerini yükleme acısız bir çözüm olduğunu düşünüyorum:

  • indir + .NET Framework 2.0 Yazılım Geliştirme Kiti (SDK) (x86) yüklemek : Anahtar

: HK https://www.microsoft.com/en-us/download/details.aspx?id=19988

  • emin aşağıdaki RegKey var olun EY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v2.0 \

    Dize Değeri: Adı: InstallationFolder Değeri (varsayılan): C:

    \ \ Program Files (x86) \ Microsoft.NET \ SDK \ v2.0

    veya bu kodu olarak .reg dosyasını kaydetmek ve çalıştırma: Projeniz özelliklerinde

    Windows Registry Editor Version 5.00 
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0] 
    "InstallationFolder"="C:\\Program Files (x86)\\Microsoft.NET\\SDK\\v2.0 
    
  • 0

    "İnşa" sekmesine seçeneğini "Otomatik" dan "seri hale getirme derlemesi oluştur" "Kapalı" olarak ayarlayın.

    Sorunumu çözdüm.