【问题标题】:MonoDevelop 2.6 Beta 1 (2.5.90) Targets .NET 1.0 Framework in Csproj files?MonoDevelop 2.6 Beta 1 (2.5.90) 针对 Csproj 文件中的 .NET 1.0 框架?
【发布时间】:2011-05-16 02:04:40
【问题描述】:

谁能告诉我为什么当我在最新的 MonoDevelop 中创建 Monotouch 项目时,它的目标是 1.0 框架而不是 3.5,就像我在早期版本中的项目一样?这导致它无法在 VS2010 中加载,我倾向于在 MonoDevelop 中构建/测试时将其用于编码。这是版本信息:

Release ID: 20509002
Git revision: 35a0397615c02f7830d46dfcd31a6c0cb86e9f85
Build date: 2011-04-06 03:37:58+0000

这里是不同版本的 csproj 文件的区别:

旧:

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

新:

<TargetFrameworkVersion>v1.0</TargetFrameworkVersion>

【问题讨论】:

    标签: mono xamarin.ios monodevelop


    【解决方案1】:

    v3.5 是一个错误; MonoTouch 项目从未以 .NET v3.5 框架为目标。他们针对的是 MonoTouch 框架,该框架被任意版本化为 v1.0。

    MD 2.6 的改进使我们能够以与 VS 2010 类似的方式处理自定义 .NET 框架。这意味着无需存储“最接近”的 .NET 框架,然后在项目完成后在内部将其切换到正确的框架加载后,我们可以使用特定的自定义框架直接处理特定的项目类型。

    如果您想在 VS 中加载 MT 项目,您已经必须对项目进行更改 - 暂时删除项目风格的 GUID(尽管一个微不足道的 VS 插件可能会使这变得不必要)。此框架版本修复意味着您还必须将目标框架更改为 VS 拥有的框架。对于 MonoTouch 4,我建议使用 Silverlight 4 或 .NET 4,而不是使用 .NET 3.5。

    最好的解决方案是将 VS 设置为实际使用 MonoTouch 框架,这样您将获得准确的代码完成和编译。在 VS 2010 中,这现在是可能的。只需将项目的 TargetFrameworkIdentifier 设置为“MonoTouch”,然后通过将所有 MonoTouch 框架程序集复制到 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoTouch\v1.0 并在 RedistList 子目录中添加一个 FrameworkList.xml 清单来安装自定义框架。

    【讨论】:

    • 感谢您的回复。臭,因为“错误”非常有用,因为我有一个很棒的工作流程,可以使用 Reshaper 和 ViEmu 在 VS 中进行编码(MonoDevelop 很好,但我只是想念我从习惯 R# 和 ViEmu 中获得的额外帮助和速度) .我还安装了用于 VS 的 Mono Tools 试用版,它似乎可以处理不同的项目 GUID 等。我将不得不花一些时间尝试您的建议,看看我是否可以让它再次工作。
    • 是的,很抱歉。作为迁移到 xbuild/MSBuild 构建引擎的计划的一部分,我必须进行更改 - 它应该可以更好地在 VS 中开发项目,但您确实需要设置自定义框架。
    • 现在,您可以降级到 MD 2.4.2。
    • 伙计,这一切都很好,但是由于我们中的许多人实际上都在编写跨平台代码,因此将其放回 v1.0 会破坏一切。出于兼容性原因,您能否决定在 3.5 或 4.0 启动 Monotouch?这真的打破了我的东西。
    • 您要求使两个不相关的版本号足够相似,以便您可以利用 IDE 对不同框架的无知?
    【解决方案2】:

    我创建了一个小型开源项目,使您能够在 Visual Studio 2010 中构建 MonoTouch 项目。该项目的自述文件还解释了如何解决目标框架版本的“v1.0”问题。

    该项目可通过https://github.com/follesoe/VSMonoTouch获得。

    【讨论】:

    • 太棒了,乔纳斯!我迫不及待想试试这个。感谢您这样做!
    【解决方案3】:

    由于这是一个 Monotouch 项目,没有人期望它适用于 Visual Studio 或 Windows。

    【讨论】:

    • 我同意,我认为您需要设置 MonoDevelop 以用作 Visual Studio(热键等)。我还在synergy-foss.org 使用了一个名为 synergy 的程序,它帮助我在两台机器上使用 1 个键盘并适当地映射 Ctrl+C,因为在 Mac 上使用了 Command。
    • 它以前运行良好,但如果你看到 mhutch 的帖子,似乎目标框架是一个错误。您必须包含 MT DLL 并进行一些其他调整,但我一直在 VS 中进行 gangbusters 编码并在 MonoDevelop 中构建/测试,直到修复了这个“错误”:-/
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    相关资源
    最近更新 更多