VSTS 2010 SGEN : 오류 : 파일 또는 어셈블리를로드 할 수 없습니다 (HRESULT에서 예외 : 0x80131515).


106

VS2010에서 이상한 문제가 발생했습니다. 우리는 TFS를 사용하여 API dll을 빌드하고 완전히 신뢰할 수있는 매핑 된 네트워크 드라이브를 사용하여 프로젝트에서이를 참조했습니다. 우리는 적어도 2 년 동안 그렇게 일했고 모든 것이 완벽하게 작동했습니다.

오늘 저는 웹앱을 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-a06398a60df0http://msdn.microsoft.com/ 참조) ko-kr / library / dd409252 (VS.100) .aspx )

참조 된 모든 dll이 bin 폴더에 복사되기 때문에 prod에서 네트워크 공유에서 코드가 실행되지 않기 때문에이 문제는 Visual Studio 또는 msbuild에서 발생한 것이라고 확신합니다.

누구든지 해결책 (또는 검색 경로에 대한 아이디어)이 있으면 알려주세요!

편집 : 직렬화 어셈블리 생성이 꺼져 있기 때문에 디버그 모드에서 작동하는 것으로 나타났습니다. 제목에서 알 수 있듯이 경로를 신뢰할 수 없다고 말하는 유틸리티이기 때문에 정말 SGEN 문제입니다.

답변:


213

Windows 탐색기에서 어셈블리 DLL을 찾아 마우스 오른쪽 단추로 클릭하고 속성을 선택한 다음 "차단 해제"단추를 눌러이 오류를 수정할 수있었습니다. DLL에는 외부 파일로 표시하는 스트림이 있으며 차단 해제를 클릭하면 해당 지정이 제거됩니다.


일 ... 단지 개발자가이 문제를 가지고 ... 바로 TFS ... 이상한에서
spaghetticowboy

잠긴 이유는 내 소스 코드가 공유에 있기 때문입니다. 코드를 로컬 디스크로 옮겼습니다. 모든 것이 잘되었습니다. (공유 문제에 대한 .NET4 SGEN 권한).
thedrs

31
하나님의 축복이 있기를. 진지하게.
FAtBalloon 2011

대부분의 기업은 로컬 관리자 액세스를 허용하지 않거나 개발자를 포함한 일반 사용자의 "차단 해제"버튼에 대한 액세스를 명시 적으로 비활성화합니다.
kevinarpe

2
zip 파일에서 복사 한 DLL에이 문제가 발생했습니다.
79IT

59

빌드가 네트워크 공유에서 dll을 참조하는 TFS 빌드 서버에서 동일하거나 유사한 문제가 발생했습니다.

문제는 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"

다음 블로그 게시물에서 .NET 4.0의 CAS 정책에 대한 몇 가지 변경 사항을 읽을 수 있습니다. 링크


1
예,이 솔루션을 발견했지만 저에게는 쓸모가 없었습니다. 아무것도 변경하지 않았습니다. 직렬화 어셈블리가 꺼지면서 해결했습니다.
Developer IT

7
다른 사람의 정보를 위해 SGEN은 일반적으로 "C : \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools"에 있습니다.
Steve Cooper

개발자 IT : 제 경우에는 직렬화 어셈블리가 필요했기 때문에 생성을 끌 수 없었습니다. 그러나 직렬화 어셈블리의 원인을 바꾸는 것도 해결책이 될 수 있습니다.
Martin Hyldahl

1
참고 그것은 당신이 아래에 ... \ 빈 \으로 netfx 4.0 도구 \ 64 \ 만드는 데 필요한 64 비트 컴퓨터의 경우
비벡에 이어

1
VS2015의 경우 다음 위치에 있습니다. C : \ Program Files (x86) \ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
Farshid

23

같은 문제가 있었고 구성 변경이 작동하지 않았습니다. 프로젝트 속성에서 직렬화 어셈블리 생성을 해제로 설정했을 때만 작동했습니다.


나를 위해 일했습니다. 이것은 질문에서 편집 한 의견을 기반으로 한 OP에 대한 정답입니다.
akousmata

나를 위해 일했습니다. Tks.
Vinicius Gonçalves

1
프로젝트 속성-> 빌드-> 직렬화 어셈블리 생성이 자동으로 설정되어 있으면 컴파일이 매력처럼 작동하기 시작했습니다. +1 및 고맙습니다.
Honza P.

그것은 내 경우에도 효과가 있습니다. 어쨌든 기본적으로 릴리스 구성에 대해 켜져 있기 때문에 정확히 끄는 것이 무엇인지 궁금합니다. 프로덕션 환경에 게시 할 때 응용 프로그램에 부작용이 없는지 확인하고 싶습니다.
Asimov

단 하나의 프로젝트에만이 문제가있었습니다. Auto에서 Off로 전환했습니다.이 프로젝트는 SOAP WS를 참조하고있었습니다.
Subha


3

이 똑같은 문제가 있었고 C : \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.0A \ Bin \ NETFX 4.0 Tools 아래에 sgen.exe.config를 추가하여 수정했습니다.

다른 사람들이 말했듯 이이 간단한 구성으로

<?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

1

제 경우에는 app.config 파일에 아래의 스 니펫을 추가했습니다. VS2010 서비스 팩 1과 함께 Windows XP를 실행하고 있습니다.

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

0

참고로 Windows 7을 실행하는 경우 sgen.exe 파일은 다음 위치에서 찾을 수 있습니다.

C : \ Program Files (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은 내 dll 파일 속성에 Unblock이 나타나지 않기 때문에 솔루션이 아닙니다. 계속 찾고 내 솔루션 파일을 닫고 프로젝트 sln 파일에 대한 네트워크 UNC 경로 대신 로컬 C : 복사를 사용하여 다시 열었습니다. 이 경로를 지나서 게시 할 수있었습니다.


0

제 경우에는 많은 dll이 차단되었습니다.

폴더의 모든 파일을 차단 해제하려면 다음 명령으로 power shell을 사용했습니다.

dir -Path [directory path] -Recurse | Unblock-File
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.