您应该将“exe”作为MSbuild任务来实现。
本质上,您构建一个C#类,该类继承自Microsoft.Build.Utilities.Task类,并覆盖Execute()方法。
喜欢的东西
public class CleanXAML : Task
{
}
然后你spefify(无论是在生成文件中,或者您导入外部.tasks文件,任务名称和路径,你刚建的DLL)
<UsingTask AssemblyFile="C:\customtasks\XamlTasks.dll"
TaskName="Rob.CustomTasks.Xaml.CleanXaml"/>
这使您可以调用这个像任何其他MSBuild任务
<CleanXaml Source="$(PathtoOriginalXaml)"
Destination="$(SourceCodePath)\$(cleanXaml.xaml)" />
从那里,你需要ŧ o找出将这个“注入”到构建过程中的最佳方法。根据你的构建方式(msbuild,vs2010,teambuild或teambuild工作流程),有不同的方法可以做到这一点。基本上,您需要在调用CoreCompile目标之前进行此操作,并确保您的“输出xaml”正确替换了CSC.exe所期望的内容。
在MsBuild任务上进行一些搜索以获取更多信息,或者询问您在此处获得的任何问题。
我强烈推荐这种方法与在MSBuild中使用CallEXE任务相比,b/c这样MSBuild属性和项目保持在上下文中,因此您只需从构建步骤移动到构建步骤,与侧面追踪整个事物做转变,然后希望它继续工作。
如果不是WPF的专家,但不能使用XamlReader.Load()吗?谷歌那。 – 2011-02-07 13:18:41
我认为这个问题更多地是关于如何将转换代码作为MSBuild的一部分来调用,而不是如何实现转换本身。 – 2011-02-07 13:40:51