如果我有一个<ProjectReference>
引用,有没有办法将条件编译值传递给该项目?这样的事情(我知道<DefineConstants>
不存在这样的情况,只是为了说明需要):
<ProjectReference Include="..\DataProducer\DataProducer.csproj">
<DefineConstants>WAS_SET</DefineConstants>
<ProjectReference>
因此,如果该项目中有一个类如下:
public sealed class ProduceValue
{
public string Produce()
{
#if WAS_SET
return "WAS SET";
#else
return "NOTHING WAS SET";
#endif
}
}
然后通过在编译期间传递该值,我可以获得不同的输出。
答案 0 :(得分:-1)
我认为可能的解决方案是“ ProjectReference”的“ Targets” https://github.com/dotnet/msbuild/blob/master/src/MSBuild/MSBuild/Microsoft.Build.CommonTypes.xsd#L644
在DataProducer.csproj中定义目标。 在目标中定义Constants属性。 因此先确定目标,再确定目标。
那它应该工作吗?
更新:
尝试了我的上一个选项,它不起作用。 另一个选择:
因此,DataProducer.csproj和DataProducer.WAS_SET.csproj将共享代码。 我们可以参考我们想要的任何人。
,我们可以为这两个csproj使用不同的AssemblyName。 因此源代码相同,但dll不同。