2010-01-19 11 views
5

VS2010 beta2 ile oynuyordum. System.Core.dll dosyasını zaten bir başvuruya sahip olmayan bir projeye eklemeyi denediğimde, VS2010'da, bu derlemeyi proje sistemi tarafından zaten başvurulan şekilde ekleyemediğimi şikayet ettiğimi fark ettim. VS2010/4.0'da bunu neden yaptıkları hakkında bir fikrin var mı? System.Core'dan birkaç türünü mscorlib'e ilettikleri için mi?System.Core.dll 4.0 varsayılan olarak eklendi?

+0

Teşekkür alacak Biz vs2010 ile Net4 çalıştı, ama bizim çözüm işe yaramadı çok fazla bagaj vardı, biz geri 3.5'e taşındı. Yükseltdiğiniz hatayı takip ederek, geçici bir çözüm buldum. Böylece, System.Core'a referansı onsuz oluşturmayacak bir projeye ekleyebilirim. –

+0

SL4 projesini SL5'e taşırken VS2012'de aynı sorunla karşılaştı. –

cevap

3

System.Core 3.5'den beri gereken çerçevenin bir parçası olmuştur, çünkü ExtensionAttribute ve LINQ Standard Query Operatörleri gibi şeyleri içerir. Benzer şekilde, VS2008'de bir 3.5 proje oluşturursanız, otomatik olarak sizin için System.Core'a bir başvuru ekler.

+0

Bunu, System.Core'a varsayılan olarak 3,5'de bile eklediğini biliyorum. Ancak, buradaki fark, System.Core'un bu başvurusunu projeden kaldırırsanız, daha sonra yeniden eklemeyi denerseniz, derlemenin zaten projeye ait olduğunu söyleyecek. Bu 3.5'de olmaz. – Niranjan

+0

Bu bir hataya benziyor: ya bu gerekli başvuruyu kaldırmanıza izin vermemeli ya da başvuruyu kaldırırsanız eklemenize izin vermelidir. Connect'te raporlama yapmaya değer olabilir. – itowlson

+3

Hata kaldırıldı: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=525663 – Niranjan

5

"Neden bunu yapıyorlar" diye bir cevap değil, ama yardımcı olabilir.

  • Bir proje Visual Studio 2010 Bu ToolsVersion=4.0 ile .Csproj üretir olun: Ben örtük System.Core.dll başvurarak yol açan işlemlere zincirini nasıl gördüğünü

    budur. MSBuild'i, .NET 4.

  • olarak kullanacağını varsayalım .csproj Microsoft.CSharp.targets öğünüzü $(MSBuildBinPath)'dan içe aktarır. Ben, bu .NET 4'te c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets
  • Microsoft.CSharp.targets ithalatı Microsoft.Common.targets
  • olacak bir noktalı virgül AdditionalExplicitAssemblyReferences düğümü bulabilirsiniz Microsoft.NETFramework.props ise Microsoft.NETFramework.props
  • Microsoft.Common.targets ithalatı tahmin - Meclislerin yedek listesi. Orada System.Core.dll ve daha sonra değiştirme için bir değişken buldum.

Yani, System.Core.dll ait devre dışı örtük referans için, sen c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.NETFramework.props yılında AdditionalExplicitAssemblyReferences düğümünde listeden kaldırabilirsiniz. Eğer kullanırsanız Bundan sonra

, örneğin System.Linq ve projenizde System.Core.dll hiçbir başvuru var, mantıksal olarak sadece Visual Studio gibi, hatayı derlemek bu soru için 2008.