我有一個「自定義工具」,用於Visual Studio將一些模板文件嵌入到代碼中。爲了一致性和可移植性,我希望能夠在Visual Studio之外構建時從MSBuild運行此模板處理器。在MSBuild中使用Studio的「自定義工具」
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
文件。
是否有一個現有的MSBuild任務可以直接使用IVsSingleFileGenerator
(包括從註冊表中加載它的位置),還是我必須手動調用處理器(通過自己實現所述MSBuild任務還是調整處理器)?
有趣的是,Using MSBuild文章在MSDN說:
單個文件生成器是在設計時訪問 而已,但MSBuild任務 可以在設計時和 構建時使用。爲獲得最大的靈活性,因此,使用MSBuild任務到 進行變換並生成代碼。有關更多 信息,請參閱項目項目(Visual Studio SDK)。
更新:我砍死這個特定的自定義工具爲MSBuild任務,但它不是漂亮。我仍然更喜歡維護良好的通用解決方案。我的博客上有posted the source。
爲了寫出一個SFG(見http://www.codeproject.com/Articles/686405/Writing-a-Single-File-Generator),我花了相當大的麻煩才最終意識到他們不會不會自動構建,並且不適用於MSBuild。什麼是更好的方法?我無法訪問您的博客鏈接。 – Qwertie 2013-11-23 17:06:59