C#.csproj文件的条件编译,或至少为同一项目手动创建双csproj文件

时间:2018-11-30 04:08:54

标签: c# msbuild csproj conditional-compilation

我在Visual Studio 2017中使用C#。如下所示,我正在使用.csproj文件嵌入DLL,以便可执行文件在其内部包含DLL。

  <ItemGroup>
    <EmbeddedResource Include="example.dll">
      <LogicalName>example.dll</LogicalName>
    </EmbeddedResource>
  </ItemGroup>

出于自动化目的,我还使用CLI中的MSBuild构建项目。问题是,我希望在其中一个版本中显示如上所示的DLL嵌入代码,而在另一个版本中则不需要。

我发现了三种解决方法,但是第一种似乎不太可能,第二种似乎是不明智的,第三种却很丑陋:

想法1::创建新的解决方案配置,然后为其分配条件编译符号,然后在代码中使用常规的#if()#endif()命令。不幸的是,这种条件编译不适用于.csproj文件。

想法2:为SAME项目创建两个.sln和.csproj文件。这样,我可以编辑第二个.sln文件以指向第二个.csproj,该文件包含如上所述的<ItemGroup>代码。我测试了这个想法,它似乎可行,但是我觉得手动编辑这些基本文件以创建秒版本是有风险的。

想法3:我真的不想这样做,因为它破坏了主要的编程原则之一-不必要的重复:维护和更新两个完全独立的解决方案/项目。每当我在一个项目中调整某些内容时,我也必须在另一个项目中进行调整。好吧。

有没有办法使Idea 1可行,Idea 2安全吗,还有其他选择吗?

0 个答案:

没有答案