0

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

目前,我知道的唯一方法是创建我需要的尽可能多的 proj 文件,然后手动选择要构建的文件。

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

谢谢。

4

2 回答 2

4

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

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

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

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

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

无需加载项。

于 2013-02-24T08:06:51.610 回答
0

不完全确定为什么你不能一直用所有 3 个文件编译项目,但如果你真的需要做这样的事情,你可以查看 MSBuild 扩展。它们支持操作 Xml 文档(这就是 csproj 文件)的能力,并且您可以根据需要动态添加/删除对文件的引用。让我知道您是否需要做类似事情的示例。

于 2013-02-23T15:30:17.053 回答