Как организовать исходные файлы C# в подпапках?
УРОВЕНЬ ТЕХНИКИ Я в основном программирую на встроенном C/C++, но иногда мне приходится заниматься программированием C# для нашего API. Для этого я использую Visual Studio 2017 для создания API DLL для наших клиентов.
API C# и наша прошивка C/C++ используют общий набор кодов состояния. У меня есть скрипт Lua, который генерирует эти коды в файл.h (для C/C++) и.cs (для C#), чтобы они всегда были синхронизированы.
Все исходные файлы, которые являются общими для продуктов и платформ, находятся в специальном проекте, который называется "Общий" (зарегистрирован в Subversion).
Когда мы создаем новые проекты и используем любой "общий" файл, мы помещаем их в подпапку "Common\", чтобы мы знали, что нет смысла возиться с ними. Subversion проверит эти "общие" файлы как внешние элементы определенной ревизии, используемой каждым проектом.
В C/C++ совсем нет проблем, если исходный код организован в несколько уровней папок, все исходные файлы имеют относительный путь к корневой папке проекта.
ПРОБЛЕМА Итак, в этом проекте на C# я организовал исходный код как обычно:
ProjectRoot\source.cs
ProjectRoot\Common\EStatusCodes.cs
в ProjectRoot\
у нас есть все файлы.cs для этого проекта C#, и в ProjectRoot\Common\
являются внешними файлами из проекта Common в Subversion.
Таким образом, после извлечения внешнего EStatusCodes.cs в ProjectRoot\Common\
папку, я добавляю его в проект C# с помощью "Add->Add Existing..." и затем указываю ProjectRoot\Common\EStatusCodes.cs
файл.
Файл отображается в проекте, но по какой-то причине Visual Studio скопировала файл из ProjectRoot\Common
папка в ProjectRoot\
папку, а затем использовать копию! (Путь к файлу в свойствах установлен на ProjectRoot\
папка.
Поэтому, если мы добавим больше кодов состояния в "общий" проект, этот проект C# не получит обновления, поскольку Visual Studio теперь всегда использует скопированную версию файла из ProjectRoot\
и не волнует, если ProjectRoot\Common\EStatusCodes.cs
был обновлен
Я пытался добавить общую папку в "Свойства-> Ссылочный путь", но он все равно копирует файл каждый раз, когда я добавляю его в проект.
Можно ли вообще иметь исходные файлы где-то еще, кроме корневой папки проекта C#?
2 ответа
В диалоговом окне "Добавить существующий" рядом с кнопкой "Добавить" должна быть маленькая стрелка вниз. Если вы нажмете на это, вы увидите опцию "Добавить как ссылку". Это добавит файл в качестве ссылки на исходный файл, и любые изменения в оригинале будут отражены в вашем проекте.
У нас есть аналогичный способ в проекте C#: добавить существующий файл в проект как "Добавить как ссылку".
Пожалуйста, обратитесь по этой ссылке для более подробной информации: https://grantwinney.com/visual-studio-add-file-as-link/