Geçen haftaki güvenlik güncellemesinden bu yana derlenemeyen, VS2010'da oluşturulan eski bir ASP.NET MVC 3 Web Uygulamamız var.
Sorun, System.Web.Mvc.dll başvurusunun bozuk olmasıdır.
Güvenlik güncellemesinin çalışmadığı derleme makinemizde çözüm dosyasını açtığımda ve References-> System.Web.MVC için özellikler iletişim kutusunu açtığımda, gayet iyi görünüyor.
Yol C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll Sürümü 3.0.0.0'dır
Ancak güvenlik güncellemesinin çalıştığı bir geliştirme makinesinde çözüm dosyasını açtığımda, References-> System.Web.MVC eksik olarak işaretleniyor. Kaldırırsam ve VS2010'un Referans Ekle iletişim kutusunu kullanarak tekrar eklemeye çalışırsam görünmez.
Web'de dolaşmak, NuGet kullanarak MVC'yi güncellemeyi içeren önerilere götürdü. VS2010 projelerimizde NuGet kullanmadık, bu nedenle bu durum için pek doğru görünmüyor. Yine de denedim ve yarım düzine eksik referansla sonuçlandı.
Windows Explorer'da "C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll" özelliklerine baktığımda derleme makinesinde 3.0.0.0 sürümünü görüyorum.
Dev makinesindeki özelliklere baktığımda 3.0.50813.1 sürümünü görüyorum.
İhtiyacım olan şey, .NET 3.0 çerçevesinde yüklü olan bu iki DLL'den bağımsız olarak derleyip çalıştırabilmem için derleme ve çalıştırma yöntemimi değiştirmenin bir yolu.
Fikirler?
Denediğim şey işe yaramadı
İlk deneme - montaj eksikse ekleyin. Eski eksik referansı sildim. Sonra DLL'yi "ASP.NET MVC3 \ Assemblies" klasöründen projemdeki bir klasöre kopyaladım. "Her Zaman Kopyala" olarak ayarlayın ve referans olarak ekleyin.
Bununla proje VS2010'da derlenirdi, ancak sayfaları aspnet_compiler ile önceden derlemeye çalıştığımda uyarılar aldım:
(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
Şimdiye kadar, çalışma zamanı politikalarını anlamaktan kaçınmayı başardım, ancak bunu web.config dosyasına eklemeye çalıştım:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Tekrar denedim ve aynı uyarıları aldım.
Sorum şu - hala bir sorunum var mı? Yoksa uyarılara rağmen benim çözecek mi?