我正在研究一种在Visual Studio2010中构建MonoTouch项目的方法,而不需要更改cproj文件。我就快完成了,但最后一步是在MonoTouch项目中具有构建操作“页面”的*.xib文件。
在Visual Studio2010中,图片操作页面将调用XAML编译器,因此为了在VS2010中构建项目,我需要将构建操作设置为None。这样做的问题是,页面文件被更改了,在MonoTouch中构建之前,我需要将它重新设置为.cproj。
所以我的问题是这样的。使用Visual Studio可扩展性模型,是否可以“拦截”某些文件类型并“忽略”它们或更改它们的构建类型?或者是Visual Studio使用msbuild构建所有内容,因此只关心.cproj文件中实际写入的内容?
发布于 2011-05-16 02:09:41
我最终使用了一个略有不同的策略来解决这个问题。您可以侦听DTE对象上的不同构建事件,并在构建前后在Visual Studio2010扩展中运行代码。
_dte.Events.BuildEvents.OnBuildBegin += MakeXibsNone;
_dte.Events.BuildEvents.OnBuildDone += MakeXibsPage;使用此策略,我可以在构建之前将构建操作更改为None,然后在构建之后更改回Page。更改生成类型的代码只是枚举解决方案中的所有项目以及项目中的所有项目项。它查找所有扩展名为.xib的文件,并使用以下代码更改构建操作:
xib.Properties.Item("ItemType").Value = "Page";
xib.Properties.Item("ItemType").Value = "None";完整的实现可以在https://github.com/follesoe/VSMonoTouch/blob/master/VSMonoTouch/VSMonoTouchPackage.cs上找到。
https://stackoverflow.com/questions/6004928
复制相似问题