动态文件包含在Visual Studio构建过程中

时间:2013-02-23 07:36:07

标签: visual-studio msbuild build-automation

我对VS上的构建过程有疑问。 我有一个DLL项目,里面有3个.cs文件。我希望能够定义在编译过程中包含哪些文件。所以我只能用file1.cs构建一个dll文件。或者file2.cs。或者file1.cs和file3.cs。

目前,我所知道的唯一方法是创建我需要的proj文件,并手动选择要构建的文件。

我想知道是否有其他方法可以做到,也许在prebuild事件中你可以重新定义包含或不包含的文件。也许有些插件存在?

感谢。

2 个答案:

答案 0 :(得分:3)

您可以通过在项目组上添加条件来有条件地将文件包含在项目文件中。 在文本编辑器中打开csproj:

<ItemGroup>
    <Compile Include="Program.cs" Condition="$(BuildtypeA)!='True'" />
    <Compile Include="Program1.cs" Condition="$(BuildtypeA)!='True'" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>

使用您喜欢的任何条件 - 在本例中为BuildtypeA。您可以在命令行上将其作为aproperty传递给msbuild。 (或我的创建。修改构建配置)

您还可以在给定文件夹上使用通配符,它​​将在项目文件中包含给定位置的内容。

<ItemGroup>
    <Compile Include="..\dynamiccontent\*.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>

无需加载项。

答案 1 :(得分:0)

不完全确定为什么你不能一直用所有3个文件编译项目,但是如果你真的需要做这样的事情,你可以查看MSBuild扩展。它们支持操作Xml文档(这是csproj文件)的功能,您可以根据需要动态添加/删除对文件的引用。如果您需要做一些像这样的事情的例子,请告诉我。