【问题标题】:Preventing mobile projects from using certain .cs files in a Shared Project阻止移动项目在共享项目中使用某些 .cs 文件
【发布时间】:2021-01-30 03:44:40
【问题描述】:

我正在制作一个移动应用程序。在我的解决方案中,我有一个共享项目。一些我不想在我的 iOS 或 Android 版本中使用的文件。

我的代码如下所示:

#if __MOBILE__
#else
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;
using System;

namespace Blah.Utils
{
   public static class AzureBlobService
   {
       public static async Task<string> CreateCloudQueue(string connectionString, string queueName)
       {
         // blah
       }
   }
}
#endif

这似乎不会为我的移动应用程序删除此文件。它仍然希望我得到那些 nuget Azure.Storage 包。我怎样才能让#if 以我想要的方式工作?

【问题讨论】:

  • 你是否在这些版本中将 __MOBILE__ 设置为 true?
  • 嗯,如何将其设置为 true?在搞砸之后......似乎 MOBILE 设置为 false? (换句话说,如果我将#else 放在#endif 正上方的行中,它就可以工作。)
  • 是的。但是您不想每次为不同的目标构建代码时都更改代码,对吗?在 Visual Studio 上,您可以为您的项目设置不同的构建配置文件。默认为调试和发布。但是你可以添加更多。在这些配置文件中,您可以设置像这样的开关。
  • 在我的 android 和 iOS 版本中,我永远不想使用上面显示的文件。我已经转到 Android 属性/构建/条件编译符号并将文本 MOBILE 放在调试和发布中。我假设一旦我这样做......它应该将 MOBILE 设置为真实值?但它根本没有设置为真实值。它似乎并没有做任何事情。
  • 当我放置内置的 DEBUG 符号时,它按预期工作。

标签: c# android ios visual-studio shared-project


【解决方案1】:

在为此苦苦挣扎了很长时间之后,我认为这一定是某个地方的一些晦涩的设置……这是因为我的共享库被我的移动应用项目之间的一个项目引用了。

换句话说,这些项目是这样相互引用的: Sharedproject

而且我没有将 MOBILE 放在 CoreLib 项目属性的“条件编译符号”中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 2015-12-09
    • 2015-04-15
    • 2017-08-27
    • 2011-01-30
    • 1970-01-01
    • 2021-07-11
    • 2017-10-27
    相关资源
    最近更新 更多