8

xaml を baml に変換するにはどうすればよいですか?

ありがとう

4

2 に答える 2

11

XAML を参照する 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 になります。

それが役立つことを願っています。

于 2009-11-11T09:23:47.510 に答える
2

BAML リソース (ローカライズされたリソース アセンブリなど) を含むアセンブリを読み込み、対応する XAML を表示する Reflector プラグインがあります: BamlViewer

Visual Studio で WPF アプリケーションをコンパイルすると、すべての XAML ファイルが BAML に変換され、その BAML がリソースとして最終的な DLL または EXE アセンブリに埋め込まれます。

于 2009-06-01T14:40:39.997 に答える