C# 构建整个解决方案,但仅为一个项目添加全局条件编译符号
我有一个相当复杂的解决方案,除了测试项目外,还包含10个项目。 它是一个分布式应用程序和服务的网络,使用远程通信进行通信;因此,拥有正确的引用程序集(和版本)至关重要。这就是为什么我希望整个事情都能被编译,并在一个构建中打包 其中一个应用程序是一个演示/分析工具,它根据用户的输入运行另一个更大的应用程序的子流程,并显示结果;这样,工程师们就有了一个工具来帮助调整他们的“大计算”设置。显然,子流程包含在另一个程序集中,提交给工程师的te结果的很大一部分是由C# 构建整个解决方案,但仅为一个项目添加全局条件编译符号,c#,.net,build,compilation,C#,.net,Build,Compilation,我有一个相当复杂的解决方案,除了测试项目外,还包含10个项目。 它是一个分布式应用程序和服务的网络,使用远程通信进行通信;因此,拥有正确的引用程序集(和版本)至关重要。这就是为什么我希望整个事情都能被编译,并在一个构建中打包 其中一个应用程序是一个演示/分析工具,它根据用户的输入运行另一个更大的应用程序的子流程,并显示结果;这样,工程师们就有了一个工具来帮助调整他们的“大计算”设置。显然,子流程包含在另一个程序集中,提交给工程师的te结果的很大一部分是由 #if ENABLE_TRACE_MAT
#if ENABLE_TRACE_MATCHING
Trace.WriteLine("Some engineering output");
#endif
我的问题是,项目设置中的条件编译符号仅限于该项目的程序集,并且不会在引用的程序集上传播。
除了一个调试/分析应用程序项目(其中所有引用的项目/程序集都必须使用定义的ENABLE_TRACE_匹配进行编译)之外,我如何配置我的生成,以便在不定义ENABLE_TRACE_匹配的情况下生成所有项目
我也不能用“如果调试”来代替“如果启用跟踪匹配”,因为这将使我们的工程师不知道如何处理大量不同的输出
提前谢谢
PS:如果你认为我的代码有味道,那我同意。另外:它大部分不是我的代码;) 您需要进一步了解Microsoft Build,它是一种现成的Microsoft.NET工具,适用于任何框架的安装 使用MSBuild可以定义这些“符号”(属性)和一批命令(目标) 也就是说,您可以创建一个MSBuild脚本,从解决方案中的所有项目导入默认的Visual Studio目标,并在脚本中声明这些属性(“符号”) 事实上,设置这些符号的属性已经存在:“DefineConstants” 因此,既然有了它,就可以让提供该属性值的MSBuild脚本在那里重新声明它,这样所有MSBuild目标都会知道这些符号 编辑: 也请勾选其他问题:
我忘了提到:都是C#和.NET 3.5