Как организовать исходные файлы С# в подпапках?

ОБЩАЯ ИНФОРМАЦИЯ В основном я программирую на встроенном C/C++, но иногда мне приходится программировать на C# для нашего API. Для этого я использую Visual Studio 2017 для создания DLL API для наших клиентов.

C# API и наша прошивка C/C++ используют общий набор кодов состояния. У меня есть сценарий Lua, который генерирует эти коды в файлы .h (для C/C++) и .cs (для C#), чтобы они всегда были синхронизированы.

Все исходные файлы, которые совместно используются продуктами и платформами, находятся в специальном проекте под названием «Общий» (зарегистрирован в Subversion).

Когда мы создаем новые проекты и используем какой-либо «общий» файл, мы помещаем их в подпапку «Общие\», чтобы знать, что с ними нет смысла возиться. Subversion будет проверять эти «Общие» файлы как внешние для конкретной версии, используемой каждым проектом.

В C/C++ совсем не проблема организовать исходный код на нескольких уровнях папок, все исходные файлы имеют относительный путь к корневой папке проекта.

ПРОБЛЕМА Итак, в этом проекте C# исходный код организован как обычно:

ProjectRoot\source.cs
ProjectRoot\Common\EStatusCodes.cs

В ProjectRoot\ у нас есть все файлы .cs для этого проекта C#, а в ProjectRoot\Common\ находятся внешние файлы из проекта Subversion "Common".

Поэтому после извлечения внешнего файла EStatusCodes.cs в папку ProjectRoot\Common\ я добавляю его в проект C# с помощью «Добавить->Добавить существующий...», а затем указываю файл ProjectRoot\Common\EStatusCodes.cs.

Файл отображается в проекте, но по какой-то причине Visual Studio скопировала файл из папки ProjectRoot\Common в папку ProjectRoot\, а затем использует копию! (Путь к файлу в свойствах указан в папку ProjectRoot\.

Итак, если мы добавим дополнительные коды состояния в проект «Общий», этот проект C# не получит обновление, потому что Visual Studio теперь всегда использует скопированную версию файла из ProjectRoot\ и не заботится о том, был ли обновлен ProjectRoot\Common\EStatusCodes.cs.

Я попытался добавить общую папку в «Свойства-> Справочный путь», но он все равно копирует файл каждый раз, когда я добавляю его в проект.

Возможно ли вообще иметь исходные файлы где-то еще, кроме корневой папки проекта С#?


person Max Kielland    schedule 02.10.2018    source источник
comment
Я всегда добавляю файлы с помощью окна Solution Explorer. Есть кнопка Показать все файлы, затем я щелкаю правой кнопкой мыши по нужной папке и выбираю в меню Включить в проект.   -  person vasily.sib    schedule 02.10.2018


Ответы (2)


В диалоговом окне «Добавить существующий» рядом с кнопкой «Добавить» должна быть небольшая стрелка вниз. Если вы нажмете на это, вы увидите опцию «Добавить как ссылку». Это добавит файл в качестве ссылки на исходный файл, и любые изменения в оригинале будут отражены в вашем проекте.

введите здесь описание изображения

person Steve    schedule 02.10.2018
comment
Спасибо!!! Это начало сводить меня с ума :) Обычно я не работаю в Visual Studio... - person Max Kielland; 02.10.2018

У нас есть аналогичный способ в проекте C#: добавить существующий файл в проект как "Добавить как ссылку".

Пожалуйста, перейдите по этой ссылке для получения более подробной информации: https://grantwinney.com/visual-studio-add-file-as-link/

person Nhan Phan    schedule 02.10.2018