背景 我主要使用嵌入式 C/C++ 进行编程,但有时我必须为我们的 API 进行一些 C# 编程。为此,我使用 Visual Studio 2017 为我们的客户创建 API DLL。
C# API 和我们的 C/C++ 固件使用一组通用的状态码。我有一个 Lua 脚本,可以将这些代码生成为 .h(用于 C/C++)和 .cs(用于 C#)文件,因此它们始终保持同步。
跨产品和平台共享的所有源文件都在一个名为“Common”的特殊项目中(签入到 Subversion)。
当我们创建新项目并使用任何“common”文件时,我们将它们放在一个名为“Common\”的子文件夹中,这样我们就知道没有必要搞乱它们。Subversion 将检查这些“通用”文件作为每个项目使用的特定修订的外部文件。
在 C/C++ 中,将源代码组织在多个文件夹中完全没有问题,所有源文件都有一个到根项目文件夹的相对路径。
问题 所以在这个 C# 项目中,我像往常一样组织源代码:
ProjectRoot\source.cs
ProjectRoot\Common\EStatusCodes.cs
在ProjectRoot\
我们有这个 C# 项目的所有 .cs 文件,以及ProjectRoot\Common\
来自 subversion 的“Common”项目的外部文件。
因此,在将外部 EStatusCodes.cs 检出到ProjectRoot\Common\
文件夹后,我通过“Add->Add Existing...”将其添加到 C# 项目中,然后指出该ProjectRoot\Common\EStatusCodes.cs
文件。
该文件显示在项目中,但由于某种原因,Visual Studio 已将文件从ProjectRoot\Common
文件夹复制到ProjectRoot\
文件夹,然后使用副本!(属性中的文件路径设置为ProjectRoot\
文件夹。
因此,如果我们向“Common”项目添加更多状态代码,则此 C# 项目不会获得更新,因为 Visual Studio 现在始终使用从中复制的文件版本,ProjectRoot\
并且不在乎是否ProjectRoot\Common\EStatusCodes.cs
已更新。
我尝试将 Common 文件夹添加到“Properties->Reference Path”,但每次将文件添加到项目时它仍然会复制该文件。
是否有可能在 C# 项目的根文件夹之外的其他地方拥有源文件?