MonoTouch项目的类库,出现“未使用活动配置构建”的问题,如何解决?

7
我正在尝试构建一组类库,以在我们将要制作的应用程序之间共享代码。
但是,我无法正确创建项目,也看不到我的错误在哪里。
让我介绍一下我用来复制这个问题的步骤,也许这里有人可以看出我做错了什么:
1. 在一个新的MonoDevelop实例中,我转到文件->新解决方案 2. 我选择MonoTouch Library Project模板,并给它一个适当的名称 3. 然后我向解决方案添加一个新的应用程序项目(以模拟在应用程序中使用库),类型为“iPhone Single View Application” 4. 我使应用程序项目成为启动项目 5. 我在应用程序项目中添加对库项目的引用 6. 然后我进行构建
这个方法可行,如果我选择运行->调试菜单项,我就可以看到应用程序在模拟器中打开。
现在我们假设我想在iPhone上测试它,所以我访问了工具栏中的下拉列表,选择了“Debug|iPhone”构建目标,立即发现类库项目显示灰色,提示如下:
(未在活动配置中构建)
如果我右键单击解决方案,检查配置映射,在选择与模拟器或iPhone相关的任何内容时,类库会从视图中消失,并且无法选择进行构建。
构建目标下拉列表现在有6个项目,分别为Debug、Release、面向iPhone的Debug/release和面向模拟器的Debug/release。显然只有不适用于iPhone或模拟器的Debug和Release最终会构建类库。
我在这里做错了什么?
在另一个我没有能够查找解决方案的项目中,最终我创建了一个空的通用项目,这是“纠正”这个问题的“正确”方法吗?

3
我刚试过了,看起来有问题。我建议你在http://bugzilla.xamarin.com上提交一个错误报告,以便能够正确跟踪该问题。 - Rolf Bjarne Kvinge
2
这里也是一样的情况,有什么新消息吗?我可以通过始终构建Debug解决方案配置,然后切换回Debug | IPhone配置来解决问题,但很容易忘记,然后在构建之间的类库中进行小更改时,就会想知道为什么更改未部署到iPhone上。在构建和部署之间交换解决方案配置是繁琐且容易出错的。 - Andreas Paulsson
1
一个解决方法可能是手动编辑您的*.sln文件,您有另一个可用的*.sln文件可以进行比较吗? - jonathanpeppers
提交的错误:[Bug 7387 - MonoTouch Library项目“未使用活动配置构建”](https://bugzilla.xamarin.com/show_bug.cgi?id=7387) - cod3monk3y
1个回答

2
有趣的是,如果您在添加应用程序项目之后再添加Lib项目,则不会发生这种情况。
我按照您的描述创建了Lib项目,然后添加了一个单视图iPhone应用程序,接着添加了另一个Lib(Lib2)。然后我比较了.sln文件中的文本,发现与Lib2相比,Lib缺少以下行:
{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

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

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

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


另外值得一提的是,即使在Debug|iPhoneDebug|iPhoneSimulator无法构建Lib,但从Debug生成的二进制文件是兼容的。我可以成功地构建并运行应用程序。


我发现当“.Build.0”部分缺失时,实际上会发生这种情况,所以只需将其添加到每个条目中即可。这真的很烦人,因为它会导致项目出现更多问题。 - Felix K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接