2013-10-02 2 views
1

Следуя основным инструкциям по добавлению моего класса библиотеки в глобальную сборку.Global Assembly fail

1 - Create a strong name key pair (/ArchieDLLTesting/bin/Debug/ArchieDLLTesting.snk) 
2 - Sign the assembly via Visual Studio (Project property, Sign, Browse that file and Save) 
3 - Installing into the GAC (gacutil –I /ArchieDLLTesting/bin/Debug/ArchieDLLTesting.dll) 

Это код библиотеки (уникальный/один класс у меня есть):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ArchieDLLTesting 
{ 
    public class ArchieSayHello 
    { 
     public ArchieSayHello() 
     { 
     } 

     public string SayHello() 
     { 
      return "Hello Archimedo"; 
     } 
    } 
} 

Все операции получили преуспевающим! Теперь, если я открою пустой проект, и я напечатаю например:

using ArchieDLLTesting; 

не находит эту сборку. Я проверил папку Windows/assembly/GAC_MSIL, и у меня нет моей DLL.

Итак, что здесь не так?

+0

win xp или более высокая версия ?? –

+0

Я уже говорил об этом в своем первом комментарии в предыдущем вопросе [здесь] (http://stackoverflow.com/questions/19132552/can-i-share-a-mibrary-library-to-all-applications#comment28295114_19132552) –

+0

Windows 7 Professional. Системе 64 бит, VS должно быть 32, но я не уверен: – markzzz

ответ

2

Кажется, что ваша машина выиграла 7, то ваша dll в C:\Windows\Microsoft.NET\assembly\GAC_64 или C:\Windows\Microsoft.NET\assembly\GAC_32 .its зависит от вас, версия для бит. Просто проверьте эти папки. В любом случае в рамках вашего проекта определенно вы найдете should add as project reference, что dll. Когда фреймворк времени использовал ссылку на dll GAC.

ОБНОВЛЕНО:

Но если вы постоянно обновлять, что GAC длл проект [ArchieDLLTesting], держать его снова прочь GAC. В противном случае время выполнения вашего приложения ссылается на старую версию этой сборки. В этом случае вы можете добавить событие сборки в GAC автоматически в этом конкретном проекте, используя следующее пост-построенное событие.

"%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\x64\gacutil.exe" /i "$(TargetPath)" 
+0

Это непрофессионально, потому что я только что открыл этот http://stackoverflow.com/questions/19135004/gac-on-edit-process?noredirect=1#comment28298999_19135004. Но как я могу использовать это событие после сборки? -i (или просто/i) это стандартная команда. Вы говорите, что после того, как окна сборки могут автоматически сделать gac в репозитории? Или я ошибаюсь? – markzzz

+1

Да, в разделе «Событие сборки» в свойствах проекта вы можете добавить сообщение post build в GAC.but убедитесь, что exe в этом пути «ProgramFiles (x86)% \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools \ x64 \ gacutil.exe ' –

3

Конечно, вам все равно нужно добавить ссылку на DLL. Просто вставка инструкции using не использует DLL из GAC.

+0

Ум, так что я должен делать? – markzzz

+0

Щелкните правой кнопкой мыши «Ссылки» в вашем проекте, затем «Добавить ссылку», а затем выберите свою DLL. –

+0

@giammin Объясните * это не правда *? –

2

Я думаю, вы спутали, что означает GAC:

глобальный кэш сборок является центральным хранилищем, где вы можете хранить сборки, что многие потребности приложений.

Если поместить сборку в GAC, чем вы можете ссылаться на него witouth необходимости физической сборки в каталоге бен

Подумайте о Framework сборки

Вам не нужно CopyLocal их, когда вы ссылаться на него ,

Таким образом, решение, чтобы добавить эту ссылку на свой проект

Во всяком случае, это не очень хорошая практика, чтобы поместить сборку в GAC

Есть очень мало ситуация, когда вы должны поместить их туда:

When should I deploy my assemblies into the GAC?

+0

Но мне это нужно! Центральный источник, где я поместил DLL в каждый из моих проектов. Поэтому, если я редактирую DLL, я редактирую его для ВСЕХ проектов, и мне не нужно копировать и вставлять в каждое приложение. Это хороший способ, которым я верю? – markzzz

+0

@markzzz нет нет! это долгая история, но вы можете прочитать ее там http://stackoverflow.com/questions/2451123/when-should-i-deploy-my-assemblies-into-the-gac – giammin

+0

Я прочитал большинство из них! Итак, для моего сценария, что мне делать? DLL по каждому приложению ужасна ... что вы предлагаете? – markzzz