Размещение ссылок проекта C # в подпапке - PullRequest
7 голосов
/ 09 февраля 2011

У меня есть решение с несколькими проектами, которые выводят все dll (кроме основного приложения, конечно).Для всех ссылок установлено значение true для всех ссылок, и все в порядке с dll в том же каталоге, что и exe.

Моя проблема в том, что это некрасиво.Я хотел бы поместить все DLL в подпапку (на самом деле две подпапки, чтобы быть точным).Как я могу сделать это в Visual Studio 2008?

Я нашел несколько вопросов, которые кажутся похожими, но я не смог найти простой ответ, который, я знаю, должен существовать.

РЕДАКТИРОВАТЬ:Чтобы быть более понятным, я хочу знать, как заставить загрузчик сборок искать ссылки где-то помимо рабочего каталога.Пользователи будут взаимодействовать с некоторыми другими файлами в каталоге, и чем меньше для них помех, тем лучше.

РЕДАКТИРОВАТЬ 2: Я также хочу избегать использования GAC.Приложение должно быть автономным.

Ответы [ 5 ]

4 голосов
/ 09 февраля 2011

Вы пробовали пространство имен AppDomain?

AppDomain.CurrentDomain.AppendPrivatePath

http://www.vcskicks.com/csharp_assembly.php

2 голосов
/ 09 февраля 2011

Или AssemblyResolve

public static class AssemblyResolver { 
    static AssemblyResolver() { 
        AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(delegate(object sender,  ResolveEventArgs args) {
            return Assembly.LoadFrom(...); 
        }); 
    }  
} 
1 голос
/ 16 июля 2015

Используйте элемент app.config <probing>, чтобы указать .NET Runtime искать в подпапках для поиска дополнительных сборок.Смотри здесь .

0 голосов
/ 11 февраля 2011

Я просто публикую статью, которая объясняет все это с деталями. Разделение вашей кодовой базы с помощью сборок .NET и проекта Visual Studio

Ниже приведены рекомендации, приведенные в статье:

  • Значительно сократите количество сборок вашегокодовая база.
  • Создавайте новую сборку только в том случае, если это оправдано определенным требованием к физическому разделению.
  • В проекте Visual Studio используйте «ссылка по сборке» вместо «ссылка по VisualСтудийный проект '.
  • Никогда не используйте опцию ссылок Visual Studio' Копировать локально = True '.
  • Поместите все решения VS и файлы .bat действия Build в каталог $ rootDir $.
  • Скомпилируйте все сборки в каталогах: $ rootDir $ \ bin \ Debug и $ rootDir $ \ bin \ Release
  • Используйте каталог $ rootDir $ \ bin для размещения тестовых сборок.
0 голосов
/ 09 февраля 2011

Вы не можете поместить эти ссылки в подпапку. Поскольку они не будут "видны" во время выполнения вашего приложения.

Первое место для их размещения - в каталоге отладки, а затем в глобальном кэше сборок (он же GAC). Обратите внимание, что то, что вы видите на вкладке (.Net) в диалоговом окне Add Reference, на самом деле являются ссылками в каталоге GAC.

Примечание: Если вы используете TFS в качестве внутреннего источника управления, обратите внимание, что ссылки не копируются в репозиторий управления источниками при выполнении регистрации, скорее вам придется скопировать их вручную. 1008 *

...