VSTS 2010 SGEN: hata: Dosya veya derleme yüklenemedi (HRESULT istisnası: 0x80131515)


106

VS2010 ile garip bir sorun yaşıyorum. API dll'lerimizi oluşturmak için TFS kullanıyoruz ve projelerimizde bunlara başvururduk, tamamen güvenilen bir eşlenmiş ağ sürücüsü kullanırdık. En az iki yıldır bu şekilde çalışıyoruz ve her şey mükemmel çalıştı.

Bugün bir web uygulamasını vs2010'a çevirdim ve bunu Release'de derlediğimde bana şunu veriyor:

SGEN: hata: Dosya veya derleme 'file: /// L: \ Api \ Release API_20100521.1 \ Release \ CS.API.Exceptions.dll' veya bağımlılıklarından biri yüklenemedi. İşlem desteklenmiyor. (HRESULT istisnası: 0x80131515)

Garip olan şey, Debug profili altında çalışırken çalışıyor olması ...

Eklemeyi denedim

<runtime>
   <loadFromRemoteSources enabled="true" />
</runtime>

app.config'e giriyor ve hala şans yok (Bkz. http://social.msdn.microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0 ve http://msdn.microsoft.com/ en-us / library / dd409252 (VS.100) .aspx )

Bu sorunun visual studio veya msbuild'den geldiğinden oldukça eminim, çünkü kodumuz üretim sırasında bir ağ paylaşımından çalışmayacaktır, çünkü başvurulan tüm dll'ler bin klasörüne kopyalanır.

Herhangi birinin bir çözümü (veya sadece bir arama yolu fikri) varsa lütfen bana bildirin!

Düzenleme: Serileştirme derlemelerinin oluşturulması Kapalı olduğundan Hata Ayıklama modunda çalıştığı ortaya çıktı. Başlığın dediği gibi, bu gerçekten bir SGEN sorunu çünkü yolun güvenilir olmadığını söyleyen bu yardımcı programdır ...

Yanıtlar:


213

Bu hatayı Windows Gezgini'nde derleme DLL'sini bularak, sağ tıklayıp Özellikler'i seçerek ve ardından "engellemeyi kaldır" düğmesine basarak düzeltebildim. DLL, onu harici bir dosya olarak işaretleyen bir akışa sahiptir ve engeli kaldır'a tıklayarak bu atamayı kaldırırsınız.


çalıştı ... bu sorunu yaşayan tek geliştirici .. doğrudan TFS'den ... tuhaf
spagetticowboy

Kilitli olmasının nedeni kaynak kodumun bir paylaşımda bulunmasıydı. Kodu yerel diske taşıdı - her şey yolunda gitti. (Paylaşım sorunları için .NET4 SGEN izinleri).
thedrs

31
Tanrı seni korusun. Ciddi anlamda.
FAtBalloon

Lütfen çoğu şirketin yerel yönetici erişimine izin vermediğini veya geliştiriciler dahil normal kullanıcılar için "Engellemeyi Kaldır" düğmesine erişimi açıkça devre dışı bırakmadığını unutmayın.
kevinarpe

2
Bir zip dosyasından kopyalanan DLL'lerde bu sorunu yaşadım.
79IT

59

Bir yapının bir ağ paylaşımından dll'leri referans aldığı bir TFS oluşturma sunucusunda aynı / benzer sorunu yaşadım.

Sorun, CLR v4 güvenlik ilkesi modelinin önceki sürümlerden beri değişmiş olması ve daha önce olduğu gibi korumalı alan derlemeleri olmamasıdır.

Sorununuzu çözmek için sgen.exe dosyasının konumunu bulun ve aynı klasörde aşağıdaki içeriklerle bir sgen.exe.config oluşturun:

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

sgen.exe genellikle şu adrestedir:

"C:\Program Files\Microsoft SDKs\Windows\v[current version]\bin\NETFX 4.0 Tools"

Bu blog yayınında .NET 4.0'daki CAS politikalarıyla ilgili bazı değişiklikleri okuyabilirsiniz: Bağlantı


1
evet, bu çözüme rastladım ama benim için işe yaramadı, hiçbir şeyi değiştirmedim ... serileştirme derlemeleri kapatıldığında çözdük
Geliştirici BT

7
Başkalarının bilgileri için, SGEN genellikle "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools" adresindedir
Steve Cooper,

Geliştirici BT: İhtiyacım olduğu için benim durumumda serileştirme derlemelerinin üretimini kapatamadım. Ancak serileştirme derlemelerinin neden döndürülmesi de bir çözüm olabilir.
Martin Hyldahl

1
64 bitlik bir makineyse ... \ Bin \ NETFX 4.0 Tools \ x64 \
Vivek Ayer

1
VS2015 için şu konumda bulun: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
Farshid

23

Aynı sorunu yaşadım ve yapılandırma değişikliği işe yaramadı. Yalnızca proje özelliklerinde Generate Serialization Assembly'yi kapalı olarak ayarladığımda işe yaradı.


Benim için de çalıştı. Bu, sorudaki düzenlenmiş yorumuna göre OP için de doğru cevaptır.
akousmata

Benim için çalıştı. Tks.
Vinicius Gonçalves

1
Proje özellikleri -> Oluştur -> Seri hale getirme derlemesi oluştur Otomatik idi, Kapalı olarak ayarlandıktan sonra derleme bir cazibe gibi çalışmaya başladı. +1 ve thanx.
Honza P.

Benim durumumda da işe yaradı. Her neyse, onu kapatmak için tam olarak ne anlama geldiğini merak ediyorum, çünkü varsayılan olarak Sürüm yapılandırması için açık: Üretim ortamında yayınladığımda uygulama üzerinde herhangi bir yan etkisi olmadığından emin olmak istiyorum.
Asimov

Yalnızca bir projede bu sorun vardı - bunu Otomatik'ten Kapalı'ya çevirdi - bu proje bir SOAP WS'ye başvuruyordu.
Subha


3

Aynı sorunu yaşadım ve sgen.exe.config dosyasını C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools altına ekleyerek düzelttim.

diğerlerinin söylediği gibi bu basit yapılandırmayla

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

2

TFS derleme hizmetinin 64 bit sürümünü çalıştıranlar için, aşağıdaki yolda yapılandırma dosyasını oluşturmam gerekiyordu:

 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64

Ve dosya içeriği:

<?xml version ="1.0"?>
<configuration>
<runtime>
    <loadFromRemoteSources enabled="true" />
</runtime>
</configuration>

1

Aynı sorunu yaşadım, montajı GAC'ye yükledim ve çalıştım


mesele şu ki, bunları GAC'de istemiyoruz. serileştirme derlemeleri Kapalı olarak çözüldük
Geliştirici BT

1

Aşağıdaki parçacığı app.config dosyasına eklemek benim durumumda çalıştı. VS2010 servis paketi 1 ile Windows XP çalıştırıyorum.

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

0

Bilginize, Windows 7 kullanıyorsanız, sgen.exe dosyası şu adreste bulunabilir:

C: \ Program Dosyaları (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Araçları

Bir sgen.exe.config oluşturup oraya yerleştirmem gerekti ve sonra bu sorun ortadan kalktı.


0

Ne benim için unblockne de configişe yaradı. Benim için püf noktası bu ipucuyducaspol . Koştum

 %windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe -m -ag 1.2 -url file://UncPathName/UncSubPath/* FullTrust

Ve gitmeye hazırdım, VisualStudio'nun yeniden başlatılmasına bile gerek yoktu.


0

Benzer bir sorunla karşılaştım ve sonunda çözümün Properties klasöründeki license.licx dosyasını kaldırarak sorunu çözdüm.


0

Benim gibi, Unblock bir çözüm değildi çünkü Unblock dll dosya özelliklerimde görünmüyor. Bakmaya devam ettim ve çözüm dosyamı kapattım ve sln dosyasını projelendirmek için ağ UNC yolu yerine yerel C: kopyasını kullanarak yeniden açtım. Bu rotaya gittikten sonra yayınlayabildi.


0

Benim durumumda birçok dll engellendi.

Klasördeki tüm dosyaların engelini kaldırmak için aşağıdaki komutla power shell kullandım

dir -Path [directory path] -Recurse | Unblock-File
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.