我在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安全吗,还有其他选择吗?