所选答案建议使用实际项目代替解决方案文件夹,但并未真正解释如何做到。我猜我在这里描述的可能是实现这一点的最不尴尬的方式... :-P
常规项目文件的问题是它们最终将由MSBUILD
编译。如果您想要一个只包含非可编译文件的项目,那将是一个问题。
但是,不久前,Visual Studio引入了一种新的项目类型:共享项目(.shproj扩展名)。该项目类型默认情况下不会被编译,只有在被另一个项目引用时(且仅当它被引用时)才会被编译。
因此,这里的一个技巧是使用共享项目而不是解决方案文件夹。显然可以添加一个从未被任何其他项目引用的共享项目,这意味着我们可以避免上述问题。
然后,通过在.shproj文件中使用<None Include="**/*" />
子句,我们可以使其自动反映任何新文件和/或子文件夹。
因此,基本上是这样做的:
- 在解决方案中创建一个新文件夹。
- 在此新文件夹的根目录下添加一个新的.shproj文件。
- 在解决方案中引用新的.shproj文件。
例如,在我的情况下,我创建了一个名为DockerDev.shproj的项目,因此我可以将一些我们仅在开发机器上运行的与Docker相关的脚本分组:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="**/*" />
</ItemGroup>
</Project>
这个 .shproj 文件将跟踪解决方案中新的 DockerDev
文件夹中的 任何 文件,包括其子文件夹中的文件。
据我所见,这个解决方案基本上就像 OP 请求的那样工作:它将作为指向文件夹的不可编译引用,并自动反映其中进行的任何更改。