[英]MonoTouch: custom msbuild task error
我正在尝试创建一个自定义任务以生成一个中间.csproj文件(原因请参见本帖子。)
自定义任务位于当前引用.net 2.0程序集的dll中。
启用了MonoDevelop的实验性msbuild / xbuild设置,以强制MonoDevelop使用xbuild来构建项目。
我可以通过一个通过<UsingTask>
元素引用任务的项目从命令行运行此命令:
~/src/All/workspace/XBuildExt/bin/Debug> mono /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/3.5/xbuild.exe ../../XBuildExtTest.targets XBuild Engine Version 2.10.8.0 Mono, Version 2.10.8.0 Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011. Build started 2/27/2012 4:26:15 PM. __________________________________________________ Project "/Users/bright/src/All/workspace/XBuildExt/XBuildExtTest.targets" (default target(s)): Target Build: It works! Done building project "/Users/bright/src/All/workspace/XBuildExt/XBuildExtTest.targets". Build succeeded. 0 Warning(s) 0 Error(s)
但是,MonoTouch项目中的相同代码因以下原因而失败:
Error initializing task GenerateMdToolProject: Cannot cast from source type to destination type. Task "GenerateMdToolProject" execution -- FAILED
问题:
MonoDevelop不使用xbuild来构建MonoTouch项目,而是使用自定义代码,该代码仅了解MSBuild项目文件的所有必要信息。
这意味着您添加到项目中的任何特殊MSBuild逻辑都不会被检测到。
有计划在将来对此进行更改,但是尚未做出任何决定(也没有时间表)。
我发现这个旧帖子表明该问题已在Mono 2.8中修复。
您误解了该帖子。 它说,此问题已在MonoDevelop (不是Mono)中于2010年9月上旬修复。因此, MonoDevelop的最新版本(如2.8.x)将具有您提到的修复程序。
关于Mono 2.8的注释是关于(原始发布问题的)另一个要求的,即具有支持.NET 4.0的运行时。 仅在使用Mono 2.8(或更高版本)时才具有此功能。 为MonoTouch开发需要Mono 2.10+,所以这对您来说不是问题。
MonoTouch也是如此吗?
这不适用于MonoTouch本身。 产品内部使用的Mono版本(无论如何基于2.10)不是您用来执行MonoDevelop或(如果您使用的) xbuild
(与Mono兼容的xbuild
)工具(除非您使用smcs
编译器)。
IWO MonoTouch中包含的Mono零件应在模拟器或设备上使用,而不用于构建或执行工具。
我可以使用.net 3.5功能(尤其是System.Xml.Linq)对自定义任务进行编码吗?
是。 在拥有.NET 4.0运行时之后,您将(通过GAC)访问较新的程序集(包括System.Xml.Linq
)以运行msbuild任务(只要正确设置了路径和环境变量,如果可以运行MonoDevelop)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.