VSTS 2010 SGEN: ошибка: не удалось загрузить файл или сборку (исключение из HRESULT: 0x80131515)
У меня странная проблема с 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 ответов
Я смог исправить эту ошибку, найдя сборку DLL в проводнике Windows, щелкнув правой кнопкой мыши, выбрав "Свойства", а затем нажав кнопку "разблокировать". У библиотеки DLL есть поток, который помечает ее как внешний файл, и, нажав кнопку разблокировки, вы удаляете это обозначение.
У меня просто была такая же / похожая проблема на сервере сборки 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 в этом посте: Ссылка
Была та же самая проблема, и изменение конфигурации не работало. Только когда я отключил Генерировать Сборку Сериализации в свойствах проекта, он заработал.
У меня была та же ошибка, и я обнаружил, что моя DLL была "заблокирована". Откройте DLL в проводнике, щелкните правой кнопкой мыши -> Свойства -> нажмите "Разблокировать".
http://cantgrokwontgrok.blogspot.com/2009/10/visual-studio-unknown-build-error.html
У меня была точно такая же проблема, и я исправил ее, добавив файл 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>
Для тех из вас, кто использует 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>
В моем случае была заблокирована куча dll.
Чтобы разблокировать все файлы в папке, я использовал Power Shell со следующей командой
dir -Path [directory path] -Recurse | Unblock-File
Добавление приведенного ниже фрагмента в файл app.config сработало в моем случае. Я использую Windows XP с пакетом обновлений VS2010 1.
<configuration>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
У меня была такая же проблема, загрузил сборку в GAC и работал
На всякий случай, как и я, Unblock не был решением, так как Unblock не отображается в свойствах моего файла dll. Продолжал искать и закончил тем, что закрыл файл моего решения и открыл заново, используя локальную копию C: вместо сетевого UNC-пути к файлу проекта sln. Был в состоянии опубликовать после перехода по этому маршруту.
Ни unblock
ни config
работал на меня. Что меня подвело, так это советcaspol
, Я побежал
%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe -m -ag 1.2 -url file://UncPathName/UncSubPath/* FullTrust
И я был готов к работе, даже перезапуск VisualStudio не требовался.
Если вы работаете в Windows 7, файл sgen.exe можно найти по адресу:
C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools
Я должен был создать sgen.exe.config и поместить его туда, а затем эта проблема ушла.
У меня возникла похожая проблема, и я, наконец, покончил с этим, удалив файл licenses.licx в папке Properties решения.