2013-04-27 5 views
2

У меня есть несколько XSLT, используемых в моем веб-приложении ASP.NET. Я хочу, чтобы эти файлы были скомпилированы в dll всякий раз, когда я строил проект. В настоящее время я компилирую xslts вручную, вызывая xsltc.exe из командной строки инструментов vs2010.XSLTC.EXE Задача MSBuild

Как добавить задачу msbuild для xsltc.exe, чтобы она создавала сборку, когда evr я создавал свой проект?

Я использую .NET 4.0.

ответ

0
<PropertyGroup> 
    <WinSDK>C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin</WinSDK> 
</PropertyGroup>  
<Target Name="Build"> 
    <Exec Command="%22$(WinSDK)\xsltc.exe%22 /out:$(OutputPath)\_PublishedWebsites\xyzapp\bin\Xslts.dll /class:ABC %22$(MSBuildProjectDirectory)\xyzapp\a.xslt%22 /class:DEF %22$(MSBuildProjectDirectory)\xyzapp\b.xslt%22 /class:GHI %22$(MSBuildProjectDirectory)\xyzapp\c.xslt%22"/> 
</Target> 
1

Это работает, но на самом деле не обматывает инструмент дружественным MSBuild. Я придумал это (это было достаточно хорошо, чтобы пройти).

<!-- The Transform File Names... --> 
<ItemGroup> 
    <XsltcTransform Include="Transform1.xslt"> 
    <!-- And the generated .Net Class name. --> 
    <Class>Transform1Class</Class> 
    </XsltcTransform> 
</ItemGroup> 
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
<!-- Sadly using $(OutDir) MUST come after the Import of CSharp.targets --> 
<PropertyGroup> 
    <XSLTCOutputDll>$(OutDir)xslts.dll</XSLTCOutputDll> 
</PropertyGroup> 
<Target Name="FindXSLTC"> 
    <PropertyGroup> 
    <XSLTC>"$(TargetFrameworkSDKToolsDirectory)xsltc.exe"</XSLTC> 
    </PropertyGroup> 
</Target> 
<Target Name="XSLTC" Inputs="@(XsltcTransform)" Outputs="$(XSLTCOutputDll)" DependsOnTargets="FindXSLTC"> 
    <Exec Command="$(XSLTC) /out:&quot;$(XSLTCOutputDll)&quot; @(XsltcTransform -> ' /class:%(Class) %(FullPath) ')" /> 
</Target> 
<Target Name="BeforeResolveReferences" DependsOnTargets="XSLTC"> 
</Target> 

Эти цели позволят вам скомпилировать несколько преобразований в одну DLL. Запуск XSLTC до «BeforeResolveRefereneces» необходим, чтобы вы могли иметь ссылку на сборку сгенерированной DLL.

Смежные вопросы