是否可以将条件编译符号添加到csproj.user文件中?

时间:2014-02-28 16:22:16

标签: c# projects-and-solutions conditional-compilation

我在VS 2013中使用C#Xamarin iOS项目。我想添加一个条件编译符号,而不影响其他人或不得不进入配置管理器并说复制调试(主要是因为如果有人修改调试我不会错过更改)。

我已经阅读了一些帖子,说明尝试将这样的内容添加到csproj.user文件...

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>$(DefineConstants);__MY_NEW_SYMBOL__</DefineConstants>
</PropertyGroup>

...但这只是删除了项目的所有其他符号。

有没有办法可以修改csproj.user文件来实现这个目的?

1 个答案:

答案 0 :(得分:5)

我看到这是一个非常老的问题。我不确定是否有人真的正在使用VS 2013,但是它可以在VS2017中正常运行,完全是问题中的处理方式。

但是!,我必须先运行Build-> Clean Solution,然后才能运行。 “重建解决方案”甚至都没有做到。我必须先清理,然后构建并运行它。

我使用以下代码对其进行了测试:

#if DEBUG
    Console.WriteLine("DEBUG");;
#endif
#if TRACE
    Console.WriteLine("TRACE");
#endif
#if __MY_NEW_SYMBOL__
    Console.WriteLine("__MY_NEW_SYMBOL__");
#endif

即使我的.user文件仅定义了__MY_NEW_SYMBOL__,运行后我仍在控制台中看到了这三个文件。

我的.csproj文件具有以下内容:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>DEBUG;TRACE</DefineConstants>
</PropertyGroup>

我的.csproj.user文件具有以下内容:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DefineConstants>$(DefineConstants);__MY_NEW_SYMBOL__</DefineConstants>
</PropertyGroup>