将Xaml编译成Baml?

8
我该如何将XAML转换为BAML?
谢谢。
2个回答

11

你可以创建一个引用XAML的MSBuild项目文件来编译它。当你在Visual Studio中编译项目时,它会在后台创建一个临时的.proj文件并进行构建。

一个相对简单的项目文件(xamlcompile.csproj)应该长这样:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <ProductVersion>9.0.30729</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <OutputType>library</OutputType>
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
    <ProjectGuid>{6B8967FF-37B7-43E8-B866-FFD6F13FFC0A}</ProjectGuid>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Xml.Linq">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Data.DataSetExtensions">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Data" />
    <Reference Include="System.Xml" />
    <Reference Include="WindowsBase" />
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="PresentationFramework.Classic" />
  </ItemGroup>
  <ItemGroup>
    <Page Include="Themes\Generic.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

您可以通过运行以下命令生成BAML文件:

MSBuild /t:ResolveReferences;MarkupCompilePass1;MarkupCompilePass2 xamlcompile.csproj

这将在obj\Debug目录下创建一个baml文件,在上面的示例中,它将是obj\Debug\Themes\Generic.baml。
希望这有所帮助。

2

有一个反射器插件,可以加载包含BAML资源(例如本地化资源程序集)的程序集,并显示相应的XAML:BamlViewer

在Visual Studio中编译WPF应用程序时,所有的XAML文件都会被转换为BAML,然后将该BAML作为资源嵌入到最终的DLL或EXE程序集中。


在你的项目的 obj\Debug 目录下查看,Hans。Visual Studio 正在生成 BAML 文件并将它们放置在那里,然后再将它们嵌入到最终的 DLL 或 EXE 中。 - sourcenouveau
请给这个非常老的回答投反对票的人留下评论。谢谢。 - Mitch Wheat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接