Ссылочный код файлов из внешней папки - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь ссылать набор кода c# на консольный проект в Visual Studio.

  1. Я хочу сохранить ссылочный код вне консоли папка проекта.

  2. Я хочу, чтобы код автоматически обновлялся при его изменении во внешней позиции.

  3. структура папок с указанными кодами должна оставаться неизменной. (~ 100 файлов)

Есть ли способ ссылки / ссылки на код без обновления каждый раз? «Включить в проект» работает, только если код находится в папке решения.

Ответы [ 3 ]

7 голосов
/ 17 января 2020

Вы можете добавить «ссылку» на файлы кода вне вашего проекта. Это не делает копию файлов.

Щелкните правой кнопкой мыши ваш проект -> Добавить -> Существующий элемент ... и найдите файл (ы). Затем нажмите стрелку вниз на кнопке «Добавить» и выберите «Добавить как ссылку»:

Add As Link

Связанные файлы отображаются с синей стрелкой на Обозреватель решений:

Linked file in Solution Explorer


Если вы хотите сослаться на всю структуру кода папки, вам нужно отредактировать .csproj. Примерно так:

<ItemGroup>
    <Compile Include="..\SomeDir\**\*.cs" Link="%(RecursiveDir)%(Filename)%(Extension)"/>
</ItemGroup>

Настройте ..\SomeDir так, чтобы он указывал путь к вашему коду. **\*.cs - это, конечно, шаблон для рекурсивного включения всех .cs файлов. %(RecursiveDir), %(Filename) и %(Extension) являются заполнителями MSBuild.

0 голосов
/ 17 января 2020

Я нашел хорошее решение, но мне любопытно, есть ли лучшее. Я на Windows и использую ссылку c simboli

cmd /c mklink /d /j _LinkedCode ..\..\..\_Code

, тогда я могу использовать «Включить в проект» в Visual Studio

0 голосов
/ 17 января 2020

Я организую свои git репо в виде плоской структуры:

  • core
  • shared1
  • website1
  • website2

Там, где веб-сайты 1 и 2 ссылаются на основное и общее ресурсы 1.

Когда я добавляю ссылки на проекты на core и shared1 с веб-сайтов 1 и 2, они остаются нетронутыми, поскольку оба находятся в одном и том же относительном местоположении от точка зрения сайтов.

Кроме того, я организую свое решение для зеркалирования конфигурации внешнего репо, например,

  • core (папка решения)
    • corelibrary. csproj
  • shared1 (папка решения)
    • sharedlibrary.csproj
  • website1services.csproj
  • website1. csproj
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...