Не могу зарегистрировать сборку в GAC для .NET4, Server 2008 R2 - PullRequest
2 голосов
/ 07 декабря 2010

У меня есть сборка со строгим именем, содержащая классы моделей, которые могут использоваться несколькими приложениями (службы WCF в IIS), расположенными на одной машине.

Вместо того, чтобы у каждой службы была своя собственная копия этой библиотеки DLL вПапка Bin, я хочу добавить ее в GAC.

Я использую gacutil.exe для .NET4: Microsoft (R) .NET Global Assembly Cache Utility. Version 4.0.30319.1 Copyright (c) Microsoft Corporation. All rights reserved.

DLL зарегистрирована в GAC, но заканчивается вC:\Windows\Assembly (GAC 2.0) - не в C:\Windows\Microsoft.NET\Assembly (GAC 4).

Когда я регистрирую DLL в GAC и удаляю ее из папки Bin, мои приложения перестают работать с:

Could not load file or assembly 'MyCompany.Enterprise.BOM' or one of its dependencies. The system cannot find the file specified. at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)...

Примечание. Сервер 2008 R2 является 64-разрядным, сборка построена для MSIL, .NET 4.0.Я использую gacutil.exe, который поставляется с Windows SDK v7.1 и находится в папке NETFX 4.0 Tools.

Чего мне не хватает?Я не могу придумать альтернатив, поэтому любые идеи приветствуются.

РЕДАКТИРОВАТЬ (Манифест):

// Metadata version: v2.0.50727
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 2:0:0:0
}
.assembly extern System.Runtime.Serialization
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 3:0:0:0
}
.assembly HCS.Enterprise.BOM
{
  .custom instance void [mscorlib]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 63 31 34 64 39 31 65 32 2D 30 35 31 65   // ..$c14d91e2-051e
                                                                                                  2D 34 66 65 31 2D 38 62 37 30 2D 61 36 36 33 66   // -4fe1-8b70-a663f
                                                                                                  39 61 37 62 34 33 35 00 00 )                      // 9a7b435..
  .custom instance void [mscorlib]System.Reflection.AssemblyKeyFileAttribute::.ctor(string) = ( 01 00 20 43 3A 5C 48 43 53 2E 45 6E 74 65 72 70   // .. C:\HCS.Enterp
                                                                                                72 69 73 65 5C 4B 65 79 5C 48 43 53 4B 65 79 2E   // rise\Key\HCSKey.
                                                                                                73 6E 6B 00 00 )                                  // snk..

  // --- The following custom attribute is added automatically, do not uncomment -------
  //  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) 

  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = ( 01 00 07 31 2E 30 2E 30 2E 30 00 00 )             // ...1.0.0.0..
  .custom instance void [mscorlib]System.Reflection.AssemblyTitleAttribute::.ctor(string) = ( 01 00 12 48 43 53 2E 45 6E 74 65 72 70 72 69 73   // ...HCS.Enterpris
                                                                                              65 2E 42 4F 4D 00 00 )                            // e.BOM..
  .custom instance void [mscorlib]System.Reflection.AssemblyDescriptionAttribute::.ctor(string) = ( 01 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Reflection.AssemblyConfigurationAttribute::.ctor(string) = ( 01 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Reflection.AssemblyCompanyAttribute::.ctor(string) = ( 01 00 0E 48 6F 72 69 7A 6F 6E 2D 42 43 42 53 4E   // ...HN
                                                                                                4A 00 00 )                                        // J..
  .custom instance void [mscorlib]System.Reflection.AssemblyProductAttribute::.ctor(string) = ( 01 00 12 48 43 53 2E 45 6E 74 65 72 70 72 69 73   // ...HCS.Enterpris
                                                                                                65 2E 42 4F 4D 00 00 )                            // e.BOM..
  .custom instance void [mscorlib]System.Reflection.AssemblyCopyrightAttribute::.ctor(string) = ( 01 00 20 43 6F 70 79 72 69 67 68 74 20 C2 A9 20   // .. Copyright .. 
                                                                                                  48 6F 72 69 7A 6F 6E 2D 42 43 42 53 4E 4A 20 32   // H2
                                                                                                  30 31 30 00 00 )                                  // 010..
  .custom instance void [mscorlib]System.Reflection.AssemblyTrademarkAttribute::.ctor(string) = ( 01 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool) = ( 01 00 00 00 00 ) 
  .publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00   // .$..............
                00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00   // .$..RSA1........
                3B 65 DD 3B C7 49 A7 F4 C9 50 BE 27 F9 62 B6 54   // ;e.;.I...P.'.b.T
                D1 26 7B DC 5B EF C1 02 59 E8 77 D4 3D F5 2F 50   // .&{.[...Y.w.=./P
                94 22 AC C3 B7 07 71 A4 99 D4 FF 10 ED 05 6D 70   // ."....q.......mp
                9A 9D 99 DC 33 1F 8A 3F A5 77 2E C5 5F 9D 35 15   // ....3..?.w.._.5.
                BA 54 47 47 C2 8B 13 8C 57 57 C6 1E F5 AB 7B D5   // .TGG....WW....{.
                B8 87 DD 4A F3 69 01 B2 6B C8 88 99 04 09 19 FC   // ...J.i..k.......
                5E 51 7E 2A B9 B5 03 80 C9 A3 EA ED EF B8 EC BF   // ^Q~*............
                EB 97 30 EC D9 E4 36 7C 0F 64 B7 27 9D 29 0D C5 ) // ..0...6|.d.'.)..
  .hash algorithm 0x00008004
  .ver 1:0:0:0
}
.module HCS.Enterprise.BOM.dll
// MVID: {D4D8B566-6B0D-4F8D-ABD4-C3A1339B4F84}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000009    //  ILONLY
// Image base: 0x031B0000

1 Ответ

1 голос
/ 08 декабря 2010

Как видно из манифеста, Dll является версией 2.0 времени выполнения, поэтому даже gacutil 4.0 поместит ее в GAC 2.0.

Манифест создается во время компиляции, поэтому необходимочто-то не так с вашим проектом и / или настройками компиляции.

Я предполагаю, что вы используете Visual Studio, поэтому проверьте настройки проектов (не решений) на вкладке Приложение.

...