VSTS 2010 SGEN: kesalahan: Tidak dapat memuat file atau perakitan (Pengecualian dari HRESULT: 0x80131515)

106

Saya mengalami masalah aneh dengan VS2010. Kami menggunakan TFS untuk membangun dll API kami dan kami biasa mereferensikannya dalam proyek kami menggunakan drive jaringan yang dipetakan yang sepenuhnya tepercaya. Kami telah bekerja seperti itu setidaknya selama dua tahun dan semuanya berjalan dengan sempurna.

Hari ini, saya mengonversi aplikasi web ke vs2010 dan ketika saya menyusunnya di Rilis, saya mendapat:

SGEN: error: Tidak dapat memuat file atau file assembly: /// L: \ Api \ Release API_20100521.1 \ Release \ CS.API.Exceptions.dll 'atau salah satu dependensinya. Operasi tidak didukung. (Pengecualian dari HRESULT: 0x80131515)

Yang aneh adalah itu berfungsi ketika berada di bawah profil Debug ...

Saya mencoba menambahkan

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

ke app.config dan masih belum berhasil (Lihat http://social.msdn.microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0 dan http://msdn.microsoft.com/ en-us / library / dd409252 (VS.100) .aspx )

Saya cukup yakin bahwa masalah ini berasal dari visual studio atau msbuild, karena kode kami tidak akan dijalankan dari jaringan berbagi ketika di prod karena semua dll yang direferensikan disalin ke folder bin.

Jika ada yang punya solusi (atau hanya ide untuk jalur pencarian) tolong beri tahu saya!

Sunting: Ternyata itu bekerja dalam mode Debug karena pembuatan rakitan serialisasi dimatikan. Seperti judulnya, ini benar-benar masalah SGEN karena utilitas inilah yang mengatakan bahwa jalurnya tidak dipercaya ...

Pengembang IT
sumber

Jawaban:

213

Saya dapat memperbaiki kesalahan ini dengan menemukan DLL perakitan di Windows Explorer, mengklik kanan, memilih Properties, dan kemudian menekan tombol "buka blokir". DLL memiliki aliran yang menandainya sebagai file eksternal - dan dengan mengklik buka blokir Anda menghapus penunjukan itu.

Terak
sumber
bekerja ... hanya pengembang yang mengalami masalah ini .. langsung dari TFS ... aneh
spaghetticowboy
Alasan pengunciannya adalah karena kode sumber saya ada di bagian yang sama. Memindahkan kode ke disk lokal - semuanya berjalan dengan baik. (Izin .NET4 SGEN pada masalah saham).
Tanggal
31
Tuhan memberkati Anda. Sungguh.
FAtBalloon
Harap dicatat, sebagian besar perusahaan tidak mengizinkan akses admin lokal, atau secara tegas menonaktifkan akses ke tombol "Buka blokir" untuk pengguna biasa, termasuk pengembang.
kevinarpe
2
Saya mengalami masalah ini dengan DLL yang disalin dari file zip.
79IT
59

Saya baru saja mengalami masalah yang sama / serupa di server build TFS di mana build mereferensikan dll dari jaringan berbagi.

Masalahnya adalah model kebijakan keamanan CLR v4 telah berubah sejak versi sebelumnya dan bukan rakitan kotak pasir seperti sebelumnya.

Untuk memperbaiki masalah Anda, cukup temukan lokasi sgen.exe dan buat sgen.exe.config di folder yang sama dengan konten berikut:

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

sgen.exe biasanya di

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

Anda dapat membaca tentang beberapa perubahan seputar kebijakan CAS di .NET 4.0 di posting blog ini: Tautan

Martin Hyldahl
sumber
1
ya saya menemukan solusi ini tetapi tidak berguna bagi saya, saya tidak mengubah apa pun ... kami selesaikan saat rakitan serialisasi dimatikan
Pengembang IT
7
Untuk info lainnya, SGEN biasanya ada di "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools"
Steve Cooper
Pengembang TI: Dalam kasus saya tidak dapat mematikan pembuatan rakitan serialisasi karena saya membutuhkannya. Tapi penyebab balik serialisasi majelis bisa menjadi solusi juga.
Martin Hyldahl
1
Perhatikan bahwa jika ini adalah mesin 64 bit yang perlu Anda buat di bawah ... \ Bin \ NETFX 4.0 Tools \ x64 \
Vivek Ayer
1
Untuk VS2015 temukan di: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
Farshid
23

Memiliki masalah yang sama dan perubahan konfigurasi tidak berhasil. Hanya ketika saya menyetel Generate Serialization Assembly ke off di properti proyek apakah itu berhasil.

rampok
sumber
Bekerja untuk saya juga. Ini adalah jawaban yang benar untuk OP juga berdasarkan komentarnya yang diedit pada pertanyaan.
akousmata
Bekerja untuk saya. Tks.
Vinicius Gonçalves
1
Properti proyek -> Bangun -> Hasilkan rakitan serialisasi adalah Otomatis, setelah mengaturnya Mati, kompilasi mulai berfungsi seperti pesona. +1 dan terima kasih.
Honza P.
Itu juga berhasil dalam kasus saya. Pokoknya saya bertanya-tanya apa sebenarnya yang dimaksud dengan mematikannya, karena secara default itu aktif untuk konfigurasi Rilis: Saya ingin memastikan bahwa itu tidak memiliki efek samping pada aplikasi ketika saya mempublikasikannya di lingkungan produksi.
Asimov
Hanya satu proyek yang mengalami masalah ini - mengubahnya dari Otomatis ke Mati - proyek ini merujuk pada SOAP WS.
Subha
3

Saya memiliki masalah yang sama persis dan memperbaikinya dengan menambahkan sgen.exe.config di bawah C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools

dengan konfigurasi sederhana ini seperti yang dikatakan orang lain

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
Matt Watson
sumber
2

Bagi Anda yang menjalankan versi 64bit dari layanan build TFS, saya harus membuat file konfigurasi di jalur berikut:

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

Dan isi file:

<?xml version ="1.0"?>
<configuration>
<runtime>
    <loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
gmasselli.dll
sumber
1

Saya memiliki masalah yang sama, memuat perakitan di GAC dan bekerja

gabouy
sumber
masalahnya adalah kami tidak ingin orang-orang di GAC. kami menyelesaikannya saat rakitan serialisasi dimatikan
IT Pengembang
1

Menambahkan cuplikan di bawah ini ke file app.config berfungsi dalam kasus saya. Saya Menjalankan Windows XP, dengan paket layanan VS2010 1.

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
venetia
sumber
0

Sama seperti FYI jika Anda menjalankan Windows 7, file sgen.exe dapat ditemukan di:

C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools

Saya harus membuat sgen.exe.config dan meletakkannya di sana dan kemudian masalah ini hilang.

ewahner
sumber
0

Baik itu unblockmaupun yang configberhasil untuk saya. Apa triknya bagi saya adalah tip inicaspol . Aku lari

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

Dan saya siap untuk pergi, bahkan VisualStudio tidak perlu restart.

Yahoo Serius
sumber
0

Saya mendapat masalah serupa dan saya akhirnya mengatasinya dengan menghapus file licenses.licx di folder Properties dari solusi.

clemchen
sumber
0

Untuk jaga-jaga seperti saya, Buka blokir bukanlah solusi, karena Buka blokir tidak muncul di properti file dll saya. Terus mencari dan akhirnya menutup file solusi saya dan membuka kembali menggunakan salinan lokal C: alih-alih jalur UNC jaringan ke file sln proyek. Mampu menerbitkan setelah melalui rute ini.

Taersious
sumber
0

Dalam kasus saya banyak dll diblokir.

Untuk membuka blokir semua file di folder saya menggunakan power shell dengan perintah berikut

dir -Path [directory path] -Recurse | Unblock-File
Daniil Grankin
sumber