ОБЩАЯ ИНФОРМАЦИЯ В основном я программирую на встроенном 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
.
Я попытался добавить общую папку в «Свойства-> Справочный путь», но он все равно копирует файл каждый раз, когда я добавляю его в проект.
Возможно ли вообще иметь исходные файлы где-то еще, кроме корневой папки проекта С#?