ПРЕДПОСЫЛКИ Я в основном программирую на встроенном C / C ++, но иногда мне приходится заниматься программированием на C # для нашего API.Для этого я использую Visual Studio 2017 для создания API-библиотеки API для наших клиентов.
API C # и наша прошивка 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\
находятся внешние файлы из проекта Common в subversion.
Так что после извлечения внешнего EStatusCodes.cs в папку ProjectRoot\Common\
Iдобавьте его в проект C # с помощью «Add-> Add Existing ...», а затем я укажу на файл ProjectRoot\Common\EStatusCodes.cs
.
Файл отображается в проекте, но по какой-то причине Visual Studio скопировалафайл из папки ProjectRoot\Common
в папку ProjectRoot\
и затем используется копия!(Путь к файлу в свойствах указан в папке ProjectRoot\
.
Так что, если мы добавим больше кодов состояния в проект «Общий», этот проект C # не получит обновление, поскольку Visual Studio теперь всегда используетскопированная версия файла из ProjectRoot\
и не волнует, обновлен ли ProjectRoot\Common\EStatusCodes.cs
.
Я попытался добавить папку Common в «Свойства-> Ссылочный путь», но он все равно копируетфайл каждый раз, когда я добавляю его в проект.
Можно ли вообще иметь исходные файлы где-то еще, кроме корневой папки проекта C #?