MonoTouch项目的类库,"不是使用活动配置构建",如何修复?

ang*_*son 7 class-library monodevelop xamarin.ios

我正在尝试构建一组类库,以便在我们要创建的应用程序之间共享代码.

但是,我无法正确创建项目,我无法看到我做错了什么.

让我来看看我用来重现这个的步骤,也许这里有人可以看到我做错了什么:

  1. 在新的MonoDevelop实例中,我转到File-> New Solution
  2. 我选择MonoTouch Library Project模板,并为其指定一个合适的名称
  3. 然后,我将一个新的应用程序项目添加到解决方案中(以模拟在应用程序中使用库),类型为"iPhone Single View Application"
  4. 我将应用程序项目作为启动项目
  5. 我在应用程序项目中添加了对库项目的引用
  6. 然后我建立

这是有效的,如果我选择Run-> Debug菜单项,我可以在模拟器中看到应用程序打开.

我们假设我现在要在iPhone上测试它,所以我访问工具栏中的下拉列表,选择"Debug | iPhone"构建目标,并立即将类库项目变为灰色:

(不是内置的主动配置)

如果我右键单击解决方案,请检查配置映射,当选择与模拟器或iPhone相关的任何内容时,类库将完全从视图中消失,并且无法选择构建.

构建目标下拉列表现在还有6个项目,iPhone的调试,发布,调试/发布以及模拟器的调试/发布.显然,只有不适用于iPhone或模拟器的Debug和Release才能构建类库.

我在这做错了什么?

在一个我没有能够寻找解决方案的奢侈品的另一个项目中,我最终创建了一个空的通用项目,是否是"正确"的方法来缓解这个问题?

cod*_*k3y 2

有趣的是,如果您在App 项目之后添加 Lib 项目,则不会发生这种情况。

我按照您的描述创建了 Lib 项目,然后添加了一个单视图 iPhone 应用程序,然后添加了另一个 Lib (Lib2)。然后我比较了 .sln 中的文本,发现 Lib 缺少以下几行(与 Lib2 相比):

{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhone.Build.0 = Debug|Any CPU
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU

{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhone.ActiveCfg = Release|Any CPU
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhone.Build.0 = Release|Any CPU
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
Run Code Online (Sandbox Code Playgroud)

使用您自己的 GUID 而不是我的。GUID 将位于文件顶部附近。例如,我的看起来像(滚动到最后):

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lib", "Lib.csproj", "{A9A8640A-C650-46AB-A21C-DF3B5D22BAA3}"
Run Code Online (Sandbox Code Playgroud)

然后我重新打开解决方案,Lib 现在在Debug|iPhoneDebug|iPhoneSimulator配置中都可用。


附带说明一下,尽管 Lib 不会内置于Debug|iPhone或中Debug|iPhoneSimulator,但来自 的二进制文件Debug是兼容的。我可以很好地构建和运行该应用程序。