【问题标题】:How do I make the MSBuild task in Mono's xbuild use the .NET 3.5 framework?如何使 Mono 的 xbuild 中的 MSBuild 任务使用 .NET 3.5 框架?
【发布时间】:2024-01-15 18:20:01
【问题描述】:

我正在尝试使用 xbuild 构建一个 MonoTouch 项目(显然是在 Mac 上)。这是我的 xbuild 项目:

<Project DefaultTargets="Application" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ApplicationProjectFilePath>..\TestApp\TestApp.csproj</ApplicationProjectFilePath>    
        <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
        <MonoTouchReferencePath>/Developer/MonoTouch/usr/lib/mono/2.1/</MonoTouchReferencePath>
    </PropertyGroup>

    <Target Name="Application">
        <MSBuild Projects="$(ApplicationProjectFilePath)" Targets="Rebuild" Properties="Configuration=AdHoc;Platform=iPhone;ReferencePath=$(MonoTouchReferencePath)" ToolsVersion="3.5"/>
    </Target>
</Project>

当我运行它时,我收到以下警告:

/Library/Frameworks/Mono.framework/Versions/2.6.7/lib/mono/3.5/Microsoft.Common.targets:  warning : Found a conflict between : 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' and 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Using 'System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' reference.

我怎样才能获得框架的 xbuild 参考 v3.5?正如您从脚本中看到的那样,我尝试了多种方法,但似乎都没有奏效。

[另外,我不知道为什么我必须明确引用 monotouch.dll 库——因为它在项目文件 (TestApp.csproj) 中被引用。任何有关这方面的 cmets 也将不胜感激。]

【问题讨论】:

    标签: msbuild mono xamarin.ios .net-3.5 xbuild


    【解决方案1】:

    MonoTouch 使用 Silverlight 框架的超集,而不是 3.5,并且目前没有针对 MonoTouch 及其框架版本的 xbuild 目标。实现这一点需要覆盖框架程序集分辨率的自定义目标,例如 Silverlight 和 MonoDroid 目标。

    目前,我建议你使用 MonoDevelop 的命令行工具 mdtool 的 build 命令,即

    /Applications/MonoDevelop.app/Contents/MacOS/mdtool build
    

    【讨论】:

      最近更新 更多