VSTS 2010 SGEN: ошибка: не удалось загрузить файл или сборку (исключение из HRESULT: 0x80131515)
У меня возникла странная проблема с VS2010. Мы используем TFS для создания DLL-библиотек API, и мы использовали для ссылки на них в наших проектах, используя сопоставленный сетевой диск, которому было полностью доверено. Мы работаем вот так как минимум два года, и все работает отлично.
Сегодня я конвертировал webapp в vs2010 и когда компилирую его в Release, он дает мне:
SGEN: ошибка: не удалось загрузить файл или файл сборки:///L:\Api\Release API_20100521.1\Release\CS.API.Exceptions.dll 'или одна из его зависимостей. операция не поддерживается. (Исключение из HRESULT: 0x80131515)
Странно, что он работает, когда он находится в профиле Debug...
Я попробовал добавить
<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, поскольку именно эта утилита говорит, что путь не доверен...
Ответы
Ответ 1
Я смог исправить эту ошибку, найдя сборку DLL в проводнике Windows, щелкнув правой кнопкой мыши, выбрав "Свойства", а затем нажав кнопку "разблокировать". DLL имеет поток, который маркирует его как внешний файл - и, щелкнув разблокировать, вы удалите это обозначение.
Ответ 2
У меня была такая же/подобная проблема на сервере сборки 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 в этом блоге: Ссылка
Ответ 3
Была та же проблема, и изменение конфигурации не работало. Только когда я установил "Сгенерировать сериализацию", чтобы отключиться в свойствах проекта, это сработало.
Ответ 4
У меня была такая же ошибка, и я обнаружил, что моя DLL была заблокирована. Откройте DLL в проводнике, щелкните правой кнопкой мыши → свойства → нажмите "Разблокировать".
http://cantgrokwontgrok.blogspot.com/2009/10/visual-studio-unknown-build-error.html
Ответ 5
У меня была такая же проблема и исправлена ее добавлением файла sgen.exe.config в C:\Program Files (x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools
с этой простой конфигурацией, как говорили другие
<?xml version ="1.0"?>
<configuration>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
Ответ 6
Для тех из вас, у кого установлена 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>
Ответ 7
У меня была такая же проблема, загрузилась сборка в GAC и работала
Ответ 8
Добавление фрагмента ниже в файл app.config работало в моем случае. Я запускаю Windows XP с пакетом обновления VS2010.
<configuration>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
Ответ 9
Как и FYI, если вы используете Windows 7, файл sgen.exe можно найти по адресу:
C:\Program Files (x86)\Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools
Мне пришлось создать файл sgen.exe.config и поместить его туда, а затем эта проблема исчезла.
Ответ 10
Ни для меня, ни для unblock
, ни для config
.
Что для меня было трюком этот совет о caspol
.
Я побежал
%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe -m -ag 1.2 -url file://UncPathName/UncSubPath/* FullTrust
И я был готов к работе, даже не требуется перезапуск VisualStudio.
Ответ 11
У меня возникла аналогичная проблема, и я, наконец, с ней справился, удалив файл license.licx в папке "Свойства" решения.
Ответ 12
На всякий случай, как и я, Unblock не был решением, так как Unblock не отображается в моих свойствах dll файла. Ухватился за поиск и закрыл файл решения и снова открылся, используя локальную копию C: вместо сетевого UNC-пути к проекту sln файла. После публикации этого маршрута удалось опубликовать.