Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 Visual Studio 2010扩展性-覆盖生成操作而不影响cproj文件_Visual Studio 2010_Xamarin.ios_Vs Extensibility - Fatal编程技术网

Visual studio 2010 Visual Studio 2010扩展性-覆盖生成操作而不影响cproj文件

Visual studio 2010 Visual Studio 2010扩展性-覆盖生成操作而不影响cproj文件,visual-studio-2010,xamarin.ios,vs-extensibility,Visual Studio 2010,Xamarin.ios,Vs Extensibility,我正在研究一种方法,使MonoTouch项目能够在VisualStudio2010中构建,而无需更改cproj文件。我就快到了,但最后一步是*.xib文件,它在MonoTouch项目中具有构建操作“页面” 在VisualStudio2010中,bild操作页面将调用XAML编译器,因此为了在VS2010中构建项目,我需要将构建操作设置为“无”。这样做的问题是.cproj文件已更改,我需要在构建MonoTouch之前将其设置回页面 所以我的问题是这样的。使用VisualStudio扩展模型,是否可

我正在研究一种方法,使MonoTouch项目能够在VisualStudio2010中构建,而无需更改cproj文件。我就快到了,但最后一步是*.xib文件,它在MonoTouch项目中具有构建操作“页面”

在VisualStudio2010中,bild操作页面将调用XAML编译器,因此为了在VS2010中构建项目,我需要将构建操作设置为“无”。这样做的问题是.cproj文件已更改,我需要在构建MonoTouch之前将其设置回页面


所以我的问题是这样的。使用VisualStudio扩展模型,是否可以“截取”某些文件类型并“忽略”它们或更改它们的生成类型?或者Visual Studio是否使用msbuild构建所有内容,因此只关心.cproj文件中实际写入的内容?

我最终使用稍微不同的策略解决了这个问题。您可以侦听DTE对象上的不同生成事件,并在生成之前和之后在Visual Studio 2010扩展中运行代码

_dte.Events.BuildEvents.OnBuildBegin += MakeXibsNone;
_dte.Events.BuildEvents.OnBuildDone += MakeXibsPage;
使用此策略,我可以在构建之前将构建操作更改为无,然后在构建之后返回页面。更改生成类型的代码只列出解决方案中的所有项目以及项目中的所有项目项。它查找扩展名为.xib的所有文件,并使用以下代码更改生成操作:

xib.Properties.Item("ItemType").Value = "Page";
xib.Properties.Item("ItemType").Value = "None";
完整的实现可在上找到