VSTS 2010 SGEN: помилка: не вдалося завантажити файл чи збірку (виняток з HRESULT: 0x80131515)


106

У мене виникає дивна проблема з VS2010. Ми використовуємо TFS для створення наших API API, і ми використовували для посилання на них у своїх проектах, присвоюючи картова мережевий диск, якому повністю довіряли. Ми працювали так щонайменше два роки, і все працювало чудово.

Сьогодні я перетворив webapp у vs2010, і коли я компілюю його у Release, він дає мені:

SGEN: помилка: не вдалося завантажити файл або файл збірки '/// L: \ Api \ Release API_20100521.1 \ Release \ CS.API.Exceptions.dll' або одна з його залежностей. Операція не підтримується. (Виняток з HRESULT: 0x80131515)

Дивна річ у тому, що він працює, коли знаходиться під профілем налагодження ...

Я спробував додати

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

в програму app.config і все ще не пощастить (Див. http://social.msdn.microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0 та http://msdn.microsoft.com/ en-us / library / dd409252 (VS.100) .aspx )

Я майже впевнений, що ця проблема від візуальної студії або msbuild, оскільки наш код не запускатиметься з мережевої частки, коли продається, тому що всі посилання на dll копіюються у папку bin.

Якщо у когось є рішення (або просто ідея для шляху пошуку), будь ласка, дайте мені знати!

Редагувати: Виявляється, він працював у режимі налагодження, тому що генерація серіалізаційних збірок була вимкнена. Як зазначається в заголовку, це справді проблема SGEN, оскільки саме ця утиліта говорить про те, що шлях не довіряють ...

Відповіді:


213

Мені вдалося виправити цю помилку, знайшовши DLL збірки в Провіднику Windows, клацнувши правою кнопкою миші, вибравши Властивості, а потім натиснувши кнопку "Розблокувати". У DLL є потік, який позначає його як зовнішній файл - і, натиснувши розблокувати, ви видалите це позначення.


працював ... тільки розробник мав цю проблему .. прямо від TFS ... дивно
— spaghetticowboy

Причина, яку було заблоковано, полягає в тому, що мій вихідний код сидів на паї. Перенесли код на локальний диск - все пішло нормально. (Дозвіл .NET4 SGEN щодо випуску акцій).
— thedrs

31
Бог вас благословить. Серйозно.
— FAtBalloon

Зверніть увагу, більшість корпорацій не дозволяють місцевому адміністратору доступу або прямо забороняють доступ до кнопки "Розблокувати" для постійних користувачів, включаючи розробників.
— кевінарпе

2
У мене була ця проблема з DLL, скопійованими з zip-файлу.
— 79IT

59

У мене просто була така ж / схожа проблема на сервері збірки TFS, де збірка посилалася на dll з мережевою часткою.

Проблеми полягають у тому, що модель політики безпеки CLR v4 змінилася з попередніх версій і не є складовими пісочниці, як раніше.

Щоб виправити свою проблему, просто знайдіть місцезнаходження sgen.exe та створіть sgen.exe.config у тій самій папці із наступним вмістом:

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

sgen.exe зазвичай на

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

Про деякі зміни навколо політики CAS в .NET 4.0 ви можете прочитати в цьому пості: Посилання


1
так, я зіткнувся з цим рішенням, але був марним для мене, я нічого не змінив ... ми вирішили, як збірки серіалізації вимкнено
— Розробник IT

7
Для іншої інформації, SGEN зазвичай знаходиться на "C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools"
— Стів Купер,

ІТ-розробник: У моєму випадку не вдалося вимкнути покоління серіалізації, оскільки мені вони потрібні. Але також можна вирішити причину повороту вузлів серіалізації.
— Мартін Гілдал

1
Зауважте, що якщо це 64-бітна машина, яку потрібно створити під ... \ Bin \ NETFX 4.0 Інструменти \ x64 \
— Vivek Ayer

1
Для VS2015 знайдіть його за адресою: C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Інструменти
— Farshid

23

Була така ж проблема, і зміна конфігурації не працювала. Тільки коли я встановив «Генерувати збірку серіалізації» у властивостях проекту, він працював.


Працював і для мене. Це правильна відповідь і для ОП, виходячи з його відредагованого коментаря до питання.
— akousmata

Працювали для мене. Ткс.
— Вініцій Гонсальвес

1
Властивості проекту -> Build -> Створити збірку серіалізації було Auto, після її вимкнення компіляція почала діяти як шарм. +1 і подяки.
— Гонза П.

Це спрацювало і в моєму випадку. У будь-якому разі мені цікаво, що саме означає його вимкнути, оскільки за замовчуванням він увімкнено для конфігурації випуску: я хотів би бути впевнений, що він не має жодних побічних ефектів для програми, коли публікую його у виробничому середовищі.
— Азімов

Лише один проект мав цю проблему - перетворив його з Авто на Вимкнено - цей проект посилався на SOAP WS.
— Subha


3

У мене була така сама проблема і виправлено її, додавши sgen.exe.config під C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Інструменти

з цим простим конфігурацією, як говорили інші

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

2

Для тих, хто працює з 64-бітовою версією сервісу збірки TFS, мені довелося створити конфігураційний файл у такий спосіб:

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

І вміст файлу:

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

1

У мене був такий самий випуск, завантажили збірку в GAC і працювали


річ у тому, що ми не хочемо тих, хто в GAC. ми вирішили, коли збірки серіалізації вимкнено
— IT Developer

1

Додавання фрагмента нижче до файлу app.config працювало в моєму випадку. Я запускаю Windows XP з пакетом оновлень 1 для VS2010.

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

0

Так само, як FYI, якщо ви працюєте з Windows 7, файл sgen.exe можна знайти за адресою:

C: \ Програмні файли (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Інструменти

Мені довелося створити sgen.exe.config і розмістити його там, і тоді ця проблема пішла.


0

Ні те, unblockні configпрацюване для мене. Що для мене трюк - це ця порадаcaspol . Я побіг

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

І я був готовий до роботи, навіть не потрібен навіть перезапуск VisualStudio.


0

У мене виникла подібна проблема, і я нарешті з нею перебрався, видаливши файл licenses.licx у папці Властивості рішення.


0

На випадок, як я, Unblock не був рішенням, оскільки Unblock не відображається у власних файлах dll. Переглянув і закінчив закрити мій файл рішення та повторно відкрити, використовуючи локальну C: копію, а не мережевий шлях UNC до проекту sln-проекту. Після публікації цього маршруту вдалося опублікувати.


0

У моєму випадку купу дзвонів було заблоковано.

Для розблокування всіх файлів у папці я використав оболонку живлення з наступною командою

dir -Path [directory path] -Recurse | Unblock-File
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.