2013-04-01 24 views
6

Visual Studio 2010'u kullanarak hem x86 hem de x64 hedeflerine sahip bir C# projesi oluşturmak için kullanıyorum. IDE'yi kullanarak oluşturduğumda, x64 ve x86 hedeflerinin doğru sonucunu elde ederim.bina x64 C# projesi 32 bit hedeflerle msbuild sonuçları

Komut satırında msbuild kullandığımda, komut satırında x64 belirtmeme rağmen, x86'da yerleşik olan her şeyi alıyorum.

.Net 4.0'dan .Net 4.5'e yükseltilene kadar bu sorunla karşılaşmadım.

.Net 4.0 ile Komut satırında x86 belirtsem bile x64 hedeflerimi alabiliyordum.

.Net 4.0 ortamında bir yapı yaptım ve daha sonra .Net 4.5 ortamında başka bir yapı yaptım ve çıktıyı günlük dosyalarına aktardım. Ben günlük dosyalarında bazı farklılıklar fark ama bu benim soruna neden budur düşünüyorum:

Ben günlük dosyasında bu satır göreceksiniz .NET 4.0'da

:

/referans: C: \ Windows \ Microsoft. Net \ montaj \ GAC_MSIL \ Microsoft.CSharp \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ Microsoft.CSharp.dll

Ben günlük dosyasında bu satır göreceksiniz .NET 4.5 olarak

: /r: "C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Microsoft.CSharp.dll "

Herhangi bir fikir? Seams. Net 4.5 x86 özel bir yol kullanıyor.

+1

msbuild çalıştırmak için hangi komut satırını kullanıyorsunuz? Sln veya csproj dosyası oluşturuyor musunuz? Belirli bir yapılandırmayı nasıl geçirirsiniz? – Lanorkin

+0

msbuild project.sln/p: Platform = "x64"/t: Temiz = Yeniden Yapılandırma/p: Yapılandırma = Hata Ayıklama – Tony

+0

Yapılandırma "Yapı çözüm yapılandırması" Debug | x64 "' nin başlangıcında bu satırda doğru mu? Sonuçların yanlış olduğunu nasıl anlıyorsunuz? Hangi çıkış dizinleri oluşturulur - 'bin \ x86 \ Debug' veya' bin \ x64 \ Debug'? – Lanorkin

cevap

5

Çözümünüzün x64 yapılandırması, projeyi AnyCPU olarak oluşturmak üzere yapılandırılmışsa bu durumla karşılaşılabilir. .Net 4.5, Prefer 32 bit'da yeni bir yapılandırma seçeneği, 64 bitlik makinede 32-bit işlemleri başlatmak için Prefer32bit bayrağı ile çalıştırılabilir hale getirir. Prefer32bit bayrağı MSBuild hedeflerinde varsayılan olduğundan, tanımladığınız davranışı göreceksiniz, yani .Net 4.0'dan .Net 4.5'e yükseltme işlemi AnyCPU projenizin 64 bit'ten 32 bit'e geçmesini sağlayacaktır.

, x64 için inşa projesini (değil çözelti) yapmak komut satırında bunu belirlemek için:

msbuild project.csproj /p:Platform=x64 

Bildirim, komut satırı değil .Sln için, .csproj içindir.

Alternatif olarak, Yapılandırma Yöneticisi'nde çözüm yapılandırmasını doğrulayın ve x64 olarak yapılandırıldığından emin olun.

+1

Teşekkürler!/Özellik eklemek mümkün oldu: Prefer32bit = msbuild komut satırına yanlış ve bu sorunu çözer gibi görünüyor. – Tony

+0

64 bit'e bir çözüm oluşturmak için msbuild ile hangi geçişte kullanılsın? –

İlgili konular