11

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

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

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

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

有没有办法可以修改 csproj.user 文件来实现这一点?

4

1 回答 1

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>
于 2019-08-14T14:19:09.557 回答