C# 在构建脚本中编辑csproj文件是常见的吗?

C# 在构建脚本中编辑csproj文件是常见的吗?,c#,visual-studio-2010,C#,Visual Studio 2010,我希望我的构建脚本在构建时自动从我的c#项目中添加(或删除)文件。我看到csproj文件中的条目告诉vs2010该文件在项目中,这些条目相对简单 我想我可以使用一个构建脚本来编辑csproj文件,添加应该在其中的文件,删除不应该基于构建脚本运行的某些逻辑的文件 有人能劝我不要这样吗 谢谢 艾萨克这不是一件平常的事,不 我不喜欢它,原因很简单:如果在本地签出上运行构建脚本,它将更改签出。在我的书中,完美的构建脚本是可逆的,只需删除构建输出和任何中间目录 如果要根据文件的生成位置包含/排除文件,那么

我希望我的构建脚本在构建时自动从我的c#项目中添加(或删除)文件。我看到csproj文件中的条目告诉vs2010该文件在项目中,这些条目相对简单

我想我可以使用一个构建脚本来编辑csproj文件,添加应该在其中的文件,删除不应该基于构建脚本运行的某些逻辑的文件

有人能劝我不要这样吗

谢谢


艾萨克

这不是一件平常的事,不

我不喜欢它,原因很简单:如果在本地签出上运行构建脚本,它将更改签出。在我的书中,完美的构建脚本是可逆的,只需删除构建输出和任何中间目录

如果要根据文件的生成位置包含/排除文件,那么最好创建一个额外的生成配置,在其中设置一个特殊的条件编译符号,并在源文件中使用#If

或者,您可以简单地在.csproj中的文件上放置一个
条件
属性,因为它只是一个MSBuild文件。大概是这样的:

<ItemGroup>
  <Compile Include="Something.cs" Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "/>


(注意-我还没有测试过以上内容,但我认为它应该会起作用)

如果你知道你需要被说服放弃这一点,你知道这是个坏主意。你是在问为什么这是个坏主意吗?我们是不是应该猜测你有一个好的理由?