无论如何在解决方案基础上#define Constant?

反正在Visual Studio解决方案基础上有#define Constant吗?

可以在csproject的基础上定义一个常量,并且可以将#define constant放在cs文件中,但我想知道是否可以在vs sln的基础上定义它?

您可以使用常见项目设置实际使用Ritch方法的变体。 基本上,您必须对解决方案中每个项目文件的末尾进行一次更改:

   ..\..\    

然后,您可以定义CommonSettings.targets以包含解决方案范围的设置。

    true   

除非您想要覆盖或合并每个项目中已定义的项目设置,否则基本上就是这样。 以下链接详细讨论了如何执行此操作。

http://www.ademiller.com/blogs/tech/2007/12/common-project-settings-for-your-visual-studio-solution/

我有另一种做法:

  1. 编辑全局配置文件。 例如在我的情况下它是.netcf2.0所以它是$(MSBuildBinPath)\microsoft.compactframework.csharp.targets

    添加以下行:

      

    这是告诉MSBuild导入CommonSettings.targets,如果它存在于您的解决方案文件夹中。

  2. 在解决方案文件夹下创建CommonSettings.targets。

    例如,定义ABC符号:

       $(DefineConstants);ABC   

间接有。 如果使用标志设置环境变量并运行VS:

 set TacoBuild=true devenv.eve bigproject.sln 

或者从命令行启动MSBuild:

 msbuild /p:TacoBuild=true 

在.csproj文件中,您需要添加一个PropertyGroup:

  $(DefineConstants);TacoBuild  

在您的代码中,您需要一个预处理器def:

 #if TacoBuild const int myConst = 42; #endif 

VS唯一的替代方法是在构建设置中为新项目配置定义预处理器定义,并在构建中使用该配置。

非MSBuild解决方案是创建一个constants.cs文件并编写一个更新cs文件的自定义设置工具。 我希望有更好的解决方案,但我还没找到。