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

时间:2018-10-02 02:40:06

标签: c# visual-studio-2017 project-files

背景 我主要使用嵌入式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

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文件夹添加到“ Properties-> Reference Path”,但是每次我将其添加到项目时,它仍会复制文件。

除了C#项目的根文件夹外,是否还有其他地方的源文件?

2 个答案:

答案 0 :(得分:3)

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

enter image description here

答案 1 :(得分:1)

在C#项目中,我们也有类似的方式:添加现有文件作为“添加为链接”

请参考此链接以获取更多详细信息: https://grantwinney.com/visual-studio-add-file-as-link/