Как развернутые .NET программы ссылаются на сборки в GAC? - PullRequest
0 голосов
/ 18 июля 2011

Лучшая практика для разработки .NET-программ заключается в следующем: никогда не ссылаться на dll из GAC при разработке.

Однако, как я должен получить фактический развернутый продукт для ссылки на dll в GAC?Например, если мой продукт - очень простое приложение для Windows, то как мне запрограммировать мой код так, чтобы один развернутый файл .exe ссылался на System.Windows.Forms.dll из GAC?

Я новичок в разработке .NET, поэтомуЯ мог бы пропустить некоторые очень основы.

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Вы добавляете ссылки из списка в диалоге Add References. Это добавляет записи к вашему .csproj, которые выглядят следующим образом:

<ItemGroup>
  <Reference Include="System" />
  <Reference Include="System.Core" />
  <Reference Include="System.Xml.Linq" />
  <Reference Include="System.Data.DataSetExtensions" />
  <Reference Include="Microsoft.CSharp" />
  <Reference Include="System.Data" />
  <Reference Include="System.Xml" />
</ItemGroup>

Вы не отправляете эти библиотеки вместе с вашим проектом. Вы можете отправить заново установочную платформу .net framework, но это хорошая идея, если вы отправляете физические копии своей программы, а не если вы предлагаете скачать. Включение их в вашу программу, вероятно, является нарушением авторских прав. И, конечно, в Mono, в будущих версиях windows / .net и т. Д. Необходимо использовать другую сборку System.Windows.Forms, которая не будет работать, если вы распространите свою копию этого файла.

Эти сборки будут загружены из GAC. Но это нормально, поскольку они являются частью .net Framework в конце концов. Скомпилированные ссылки будут выглядеть как mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089. Таким образом, фреймворк выберет правильную версию и удостоверится, что ссылочные сборки получены от правильного создателя.

Принцип неиспользования GAC относится к вашим собственным сборкам или сборкам третьих сторон. Вы отправляете их вместе с вашим приложением и просто располагаете их в том же каталоге, что и ваша основная программа. Добавление их в GAC необходимо только в нескольких конкретных сценариях.

0 голосов
/ 18 июля 2011

Простой ответ - не ссылаться на System.Windows.Forms.dll из GAC.Вместо этого включите эту DLL в свое приложение.

ОБНОВЛЕНИЕ

Если вы хотите добавить ссылки на библиотеки DLL в GAC, вы можете сделать это с помощью обычного диалога добавления ссылок.1008 *

При просмотре C:\Windows\assembly вы можете выбрать эти ссылки.

...