如何组织子文件夹中的 C# 源文件?

Max*_*and 4 c# projects-and-solutions visual-studio-2017

背景 我主要使用嵌入式 C/C++ 进行编程,但有时我必须为我们的 API 进行一些 C# 编程。为此,我使用 Visual Studio 2017 为我们的客户创建 API DLL。

C# API 和我们的 C/C++ 固件使用一组通用的状态代码。我有一个 Lua 脚本,它将这些代码生成为 .h(对于 C/C++)和 .cs(对于 C#)文件,以便它们始终保持同步。

所有跨产品和平台共享的源文件都位于一个名为“Common”的特殊项目中(签入到 Subversion)。

当我们创建新项目并使用任何“通用”文件时,我们将它们放在名为“Common\”的子文件夹中,这样我们就知道没有必要弄乱它们。Subversion 将检查这些“通用”文件作为每个项目使用的特定修订版的外部文件。

在 C/C++ 中,将源代码组织在多层文件夹中完全没有问题,所有源文件都有到根项目文件夹的相对路径。

问题 因此,在这个 C# 项目中,我像往常一样组织源代码:

ProjectRoot\source.cs
ProjectRoot\Common\EStatusCodes.cs
Run Code Online (Sandbox Code Playgroud)

在 中,ProjectRoot\我们有这个 C# 项目的所有 .cs 文件,以及ProjectRoot\Common\来自 subversion 的“Common”项目的外部文件。

因此,将外部 EStatusCodes.cs 检出到文件夹后ProjectRoot\Common\,我通过“添加->添加现有...”将其添加到 C# 项目,然后指出该ProjectRoot\Common\EStatusCodes.cs文件。

该文件显示在项目中,但由于某种原因,Visual Studio 已将文件从文件夹复制ProjectRoot\Common到该文件夹ProjectRoot\​​,然后使用该副本!(属性中的文件路径设置为ProjectRoot\文件夹。

因此,如果我们向“Common”项目添加更多状态代码,则该 C# 项目不会获得更新,因为 Visual Studio 现在始终使用文件的复制版本ProjectRoot\,并且不关心是否ProjectRoot\Common\EStatusCodes.cs已更新。

我尝试将 Common 文件夹添加到“属性->参考路径”,但每次将其添加到项目时它仍然会复制该文件。

是否可以将源文件放在 C# 项目根文件夹之外的其他位置?

Ste*_*eve 5

在“添加现有”对话框中,“添加”按钮旁边应该有一个向下的小箭头。如果单击此按钮,您将看到“添加为链接”选项。这会将文件添加为原始文件的参考链接,并且对原始文件的任何更改都将反映在您的项目中。

在此输入图像描述