源文件和MSBuild .proj文件在不同的目录中

时间:2013-01-29 18:10:57

标签: visual-studio msbuild

我有一个项目(目前是.csproj,只包含.js文件)。我只将它用于一些后期构建事件,以及来自Visual Studio的智能感知。

我可以以某种方式拥有以下目录结构吗?

Root/Projects/HelloWorld.(cs)proj
Root/Sources/Test.js

但Visual Studio似乎只从.csproj文件下的文件夹中获取源文件,如果我尝试从其他地方添加文件,它们会被添加为链接(我无法删除或从VS重命名)。举例来说,我可以把它放到.proj文件中,它会改变根目录吗?

2 个答案:

答案 0 :(得分:1)

你可以mklink /D Sources ..\Sources欺骗VS,但它可能会破坏你的VCS,或者你可以挂钩AfterBuild目标并将源从VS的根目录复制到IntelliJ。

答案 1 :(得分:0)

Visual Studio仅支持两种向.csproj添加文件的方法:要么将您添加的文件复制到.csproj的目录层次结构(默认值)下,要么选择添加文件作为链接,它添加了对文件的引用。

你不能改变以前的行为,除非通过调用后者的行为,这显然有你不满意的缺点。

您可以直接编辑.csproj以包含Compile item group中可能构建的其他文件,但不会显示或运行,因为您可能会在IDE本身。

如果您的目标是分离源和项目,您可以重新安排目录的结构,以便所有项目都在根目录,并且有一个源目录是这些项目的兄弟:

Foo.csproj
Foo.someotherproj
Source/
  *.js

这意味着从Visual Studio查看时,.csproj中的所有内容都位于“Source”文件夹中。

另一种选择可能是查看某种项目生成工具,例如premakeCMake,但它们对C#项目文件的支持可能不那么强大。