여기 상황은 다음과 같습니다.gacutil과 환경의 주요한 두통의 차이점
전역 어셈블리 캐시에있는 DLL이 .NET 2에서 컴파일되었습니다. 내가
를 사용하여 전역 어셈블리 캐시에 정책 파일을로드 할 때al /link:myDLL.dll.config /out:policy.1.2.myDLL.dll /keyfile:myDLL.snk
그러나 :
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myDLL" publicKeyToken="c426c33bab532523" />
<bindingRedirect oldVersion="1.2.2.0-1.2.2.22" newVersion="1.2.2.23" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
내가 다음 정책 파일을 생성 할 어셈블리 링커를 사용 : 나는 읽고 myDLL.dll.config
파일이
Failure adding assembly to the cache: This assembly is built by a
runtime newer than the currently loaded runtime and cannot be loaded.
:
gacutil -i policy.1.2.myDLL.dll
나는 오류를 얻을
닷넷 전역 어셈블리 캐시 유틸리티 버전 2.0.50727.42이지만, 나는 다음과 같은 새로운 C의 # .NET이 콘솔 프로젝트를 생성하고 실행하여 빌드 환경의 버전을 확인 :
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MessageBox.Show(Environment.Version.ToString());
}
}
}
내 Environment.Version은 2.0.50727.5466입니다.
이것은 모두 같은 컴퓨터, 특히 내 devbox에서 발생합니다.
\ bin \ release 폴더의 myDLL.dll을 c : \ Windows \ assembly 폴더에 복사해도 문제가 없습니다. 그러나 policy.1.2.myDLL.dll 파일을 \ bin \ release에서 \ assembly로 복사하거나 gacutil을 사용하면 실패합니다.
http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/e76f5c46-e679-4923-bf9d-1f883074eb2e/? –
.NET 2.x 버전을 사용하고 있습니까? –
@TimB 잘 모르겠습니다. "al"을 입력하고 Assembly Linker 버전 10.0.30319.1을 사용하는 새 Visual Studio 2010 명령 프롬프트를 열었습니다. 전역 어셈블리 캐시에서 DLL을 사용하여 작업 할 때는 약간 새로운 기능입니다. – CurtisHx