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.