用C#中的Defines对配置进行倍数运算
本文关键字:运算 配置 中的 Defines | 更新日期: 2023-09-27 18:29:47
我有一个包含25个C#项目的解决方案。
对于解决方案的每次编译,我都会使用预编译器指令调整一些项目配置。
当我需要向配置添加指令时。我必须去每一个项目,并添加该指令。当我添加一个新的配置时,它是一样的,甚至更糟。
在C++项目中,我会有一个.h文件,它将包含在所有项目中,以具有类似全局配置文件的内容。
但是,我怎么能用Visual Studio和C#做这样的事情呢?
实现这一点的一个好方法是从每个项目配置中引用外部配置文件。
您可以使用频繁更改的信息/目录创建一个配置文件,并从每个项目配置文件中引用它。
例如:
指令。confg:
<appSettings>
<add key="ThisDirectory" value="This'Directory'Path"/>
<add key="ThatDirectory" value="That'Directory'Path"/>
</appSettings>
在web/app配置中,您将拥有:
<configuration>
<appSettings file="C:'PathToYourExternalConfigFile'directives.config">
<add key="OtherKeyNotInExternalConfig" value="SomeValue" />
</appSettings>
</configuration>
现在,只需要更新directionales.config文件,所有其他项目都将自动进行最新的配置更改。
如果您使用msbuild构建项目,那么您所需要做的就是设置一个与您的定义同名的环境变量。
#if OPTION_ONE
// option one code here
#else
// option one not set
#endif
然后从开发者命令提示符,你可以像这样构建
set OPTION_ONE=true
msbuild YourSolution.sln
如果这不起作用,你可以将以下内容添加到你的项目文件中
<DefineConstants Condition="'%(OPTION_ONE)' != ''">OPTION_ONE</DefineConstants>
编辑:
为定义创建一个通用的c#文件,就像在c++中使用头一样。创建一个用户文件(即MyProject.csproj.user)以包含通用cs文件。用户文件不需要包含在项目中。如果存在,Visual studio将自动使用它:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<Compile Include="$(SolutionDir)CommonFile.cs"/>
</Project>
将该文件复制到每个项目目录,更改文件名以匹配项目。
或者,您可以通过添加现有项目将通用文件添加为链接,然后单击add旁边的选项箭头,然后选择add as link