VSTS 2010 SGEN: ошибка: не удалось загрузить файл или сборку (исключение из HRESULT: 0x80131515) - PullRequest
105 голосов
/ 09 июня 2010

У меня странная проблема с VS2010.Мы используем TFS для создания наших API-библиотек, и мы использовали для ссылки на них в наших проектах использование сетевого подключенного диска, который был полностью доверенным.Мы работали так по крайней мере два года, и все работало отлично.

Сегодня я преобразовал веб-приложение в vs2010, и когда я компилирую его в Release, он дает мне:

SGEN: ошибка: не удалось загрузить файл или сборку 'file: /// 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)

Я почти уверен, что эта проблема из Visual Studio или msbuild, так как наш код не будет запускаться изобщий доступ к сети, когда в prod, потому что все упомянутые dll скопированы в папку bin.

Если у кого-то есть решение (или просто идея для пути поиска), пожалуйста, дайте мне знать!

Редактировать: Оказывается, он работал в режиме отладки, потому что генерация сборок сериализации была выключена. Как видно из названия, это действительно проблема SGEN, поскольку именно эта утилита говорит, что путь не является доверенным ...

Ответы [ 12 ]

211 голосов
/ 16 ноября 2010

Мне удалось исправить эту ошибку, найдя сборку DLL в проводнике Windows, щелкнув правой кнопкой мыши, выбрав «Свойства», а затем нажав кнопку «разблокировать».В библиотеке DLL есть поток, который помечает его как внешний файл, и, щелкнув разблокировать, вы удалите это обозначение.

56 голосов
/ 04 августа 2010

У меня была такая же / похожая проблема на сервере сборки 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 вы можете прочитать в этом посте: Ссылка

21 голосов
/ 22 ноября 2010

Была такая же проблема, и изменение конфигурации не работало.Только когда я отключил функцию «Создать сборку сериализации» в свойствах проекта, он работал.

6 голосов
/ 22 июня 2011

У меня была такая же ошибка, и я обнаружил, что моя DLL "заблокирована".Откройте DLL в проводнике, щелкните правой кнопкой мыши -> Свойства -> нажмите «Разблокировать».

http://cantgrokwontgrok.blogspot.com/2009/10/visual-studio-unknown-build-error.html

3 голосов
/ 09 августа 2011

У меня была точно такая же проблема, и я исправил ее, добавив файл sgen.exe.config в C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools

с этой простой конфигурацией, как говорили другие

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
2 голосов
/ 22 февраля 2014

Для тех из вас, кто работает с 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 голос
/ 19 апреля 2011

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

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
1 голос
/ 22 июля 2010

У меня была такая же проблема, загрузил сборку в GAC и работал

0 голосов
/ 19 декабря 2016

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

0 голосов
/ 11 августа 2015

У меня возникла похожая проблема, и я, наконец, покончил с этим, удалив файл licenses.licx в папке Properties решения.

...