Özet:Proje dosyalarında <ProjectReference> ne zaman kullanılır?
Projeler # projeleri görsel stüdyo ile yanlış sırada kurmak ve C++ ve C yönetilen
Açıklama:
Ben kuruyor büyük (100+ proje) çözümü dosyası var Bir kaç proje yanlış sırada. Çözelti dosya projelerinin aşağıdaki türde içerir:
- doğal C/C++
- yönetilen C++
- yönetilen C#
çözüm projelerinin farklı türleri arasında tüm uygun bağımlılıkları içerir. Tamam, komut satırından (MSBuild kullanarak) oluşturduğumda bir sorun var. Yönetilen projelerin bağımlılıkları (hem C++ hem de C#) yanlış sırayla oluşturulur. Örneğin, yönetilen bir bağımlılık eksik olduğu için bir proje yapılamaz.
#using <foo.dll>
Foo.dll henüz varolmadığı: Mesela bir yönetilen C++ dosya başarısız olur bir kullanarak beyanı olacaktır.
Bu, foo.dll dosyasının daha önce oluşturulmuş olması gerektiği anlamına gelir, ancak değil. Daha önce bahsettiğim gibi, bağımlılıklar çözüm dosyasında uygun şekilde ayarlanmıştır. foo Baz bağlıdır Örneğin, ben
Project("{C4ABA494-43D0-400A-9917-20E167A12CFD}") = "Foo", "...\Foo.vcxproj", "{5A42640E-9E0A-442B-8A40-AA91AD5444AC}"
ProjectSection(ProjectDependencies) = postProject
...
{2CE32AE0-B129-40BA-B06E-A628FA149AB3} = {2CE32AE0-B129-40BA-B06E-A628FA149AB3}
EndProjectSection
EndProject
...
Project("{C4ABA494-43D0-400A-9917-20E167A12CFD}") = "baz", "...\baz.csproj", "{2CE32AE0-B129-40BA-B06E-A628FA149AB3}"
ProjectSection(ProjectDependencies) = postProject
...
EndProjectSection
EndProject
Yani çözüm dosyası doğru bağımlılığı var ... çözüm dosyasında bu var. Ancak Foo.vcxproj projesindeki bağımlılık sadece #using yönergesiyle ifade edilir. Visual studio blogunda msbuild projelerini sipariş etmede bilinen bir hata olduğunu okudum. etrafında
http://blogs.msdn.com/b/visualstudio/archive/2010/12/21/incorrect-solution-build-ordering-when-using-msbuild-exe.aspx
Onların çalışmaları bu gibi benim projelerine denilen bir madde eklemektir:
<ProjectReference Include="... foo.csproj">
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
Neyse, benim sorum: Ben SADECE Yönetilen C++ projeler için bunu yapmak gerekir? Yoksa bunu Yönetilen C++ VE C# projeleri için mi yapıyorum? (Bağımlılıkları açık olduğundan bu yana C# projeleri için bunu yapmaya gerek duymuyorum)
Not: Bunu yapmamdaki tüm projelere koymaya çalıştım ve çok sıcak çalışmadı. Yerel projelerimde çok fazla garip derleme hatası var gibi ...
Buna herhangi bir yanıt için teşekkürler.
Yerel kitaplığa bağlanmak için ProjectReference Öğesi eklerseniz, MSBuild komut dosyalarının derinliklerinde hatalar oluşturduğumu buldum. Bu yüzden tüm Yönetilen C++ projelerim için ProjectReference, Diğer .csproj dosyalarına eklemeye başladım. Şimdi bunları .csproj dosyalarına ekleyeceğim ve nasıl gittiğini göreceğim. –