代码之家  ›  专栏  ›  技术社区  ›  dommer

如何使Mono的Xbuild中的msbuild任务使用.NET 3.5框架?

  •  1
  • dommer  · 技术社区  · 14 年前

    我正在尝试使用Xbuild(显然是在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)中被引用。对此的任何评论也将不胜感激。]

    1 回复  |  直到 9 年前
        1
  •  1
  •   Mikayla Hutchinson    14 年前

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

    现在,我建议您使用MonoDevelope命令行工具mdtool的build命令,即

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