Вот ситуация:
У меня есть DLL, скомпилированная в .NET 2, которая помещается в глобальный кеш сборки. У меня есть файл myDLL.dll.config
, который гласит:
<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>
Затем я использую компоновщик сборки для создания файла политики:
al /link:myDLL.dll.config /out:policy.1.2.myDLL.dll /keyfile:myDLL.snk
Но когда я пытаюсь загрузить файл политики в глобальный кеш сборки, используя
gacutil -i policy.1.2.myDLL.dll
Я получаю сообщение об ошибке:
Failure adding assembly to the cache: This assembly is built by a
runtime newer than the currently loaded runtime and cannot be loaded.
Версия .NET Global Assembly Cache Utility — 2.0.50727.42, но я проверил версию в среде сборки, создав новый консольный проект C# .NET 2 и выполнив следующее:
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());
}
}
}
и моя среда. Версия 2.0.50727.5466.
Все это происходит на одном и том же компьютере, в частности, на моем dev box.
Я могу скопировать myDLL.dll из папки \bin\release в папку c:\Windows\assembly, без проблем. Но попытка либо скопировать файл policy.1.2.myDLL.dll из \bin\release в \assembly, либо с помощью gacutil не удалась.
Assembly Linker version 10.0.30319.1
. Я немного новичок в работе с dll в глобальном кеше сборки. - person CurtisHx   schedule 12.06.2013