在MSBuild中使用Studio的“自定义工具”

时间:2009-01-12 10:33:02

标签: visual-studio msbuild customtool

我有一个Visual Studio的“自定义工具”,可以将一些模板文件转换为代码。为了保持一致性和可移植性,我希望能够在Visual Studio外部构建时从MSBuild运行此模板处理器。

Visual Studio为文件创建以下代码段:

<!-- the template -->
<None Include="Template.in">
  <Generator>Template Processor</Generator>
  <LastGenOutput>Template.in.Designer.cs</LastGenOutput>
</None>
<!-- generated file -->
<Compile Include="Template.in.Designer.cs">
  <AutoGen>True</AutoGen>
  <DesignTime>True</DesignTime>
  <DependentUpon>Template.in</DependentUpon>
</Compile>

此处的问题是Template.in仅由Studio处理,而不是由MsBuild处理,这可能会导致过时的Designer.cs文件。

是否存在可以直接使用IVsSingleFileGenerator的现有MSBuild任务(包括从注册表加载其位置),还是必须手动调用处理器(通过自己实现所述MSBuild任务或调整处理器) )?

有趣的是,MSDN上的Using MSBuild文章说:

  

可以访问单个文件生成器   仅在设计时,但MSBuild任务   可以在设计时使用   建立时间。为了最大的灵活性   因此,使用MSBuild任务   转换并生成代码。更多   信息,请参阅项目项目(Visual   Studio SDK)。


更新:我已经将这个特定的自定义工具入侵到了msbuild任务中,但它并不漂亮。我仍然更喜欢维护良好的通用解决方案。我在我的博客上posted the source

1 个答案:

答案 0 :(得分:1)

从VisualStudio中指定自定义工具时,它会为项目或解决方案文件添加什么?由于它们只是msbuild文件,因此您可以将添加的xml用作自己的构建文件的模板。