【问题标题】:Compile Xaml into Baml?将 Xaml 编译成 Baml?
【发布时间】:2011-08-01 23:51:20
【问题描述】:

如何将 xaml 转换为 baml?

谢谢

【问题讨论】:

    标签: wpf xaml baml


    【解决方案1】:

    您可以通过创建引用它的 MSBuild 项目文件来编译 XAML。当您对项目进行编译时,这就是 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】:

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

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

      【讨论】:

      • 查看项目的 obj\Debug 目录 Hans。 Visual Studio 正在生成 BAML 文件并在将它们嵌入最终的 DLL 或 EXE 之前将它们放在那里。
      • 投反对票的人(对这个非常古老的答案)是否请发表评论。谢谢。
      猜你喜欢
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多