2009-06-01 8 views

Répondre

2

Il est un plug-in réflecteur qui charge des assemblages contenant des ressources BAML (par exemple, les ensembles de ressources localisées) et montre le XAML correspondant: BamlViewer

Lorsque vous compilez une application WPF dans Visual Studio, tout Vos fichiers XAML sont convertis en BAML et BAML est ensuite incorporé en tant que ressource dans l'assemblage final DLL ou EXE.

+0

en fait, je veux le contraire ... –

+0

Regardez dans votre obj de projet \ Debug répertoire Hans. Visual Studio génère des fichiers BAML et les y place avant de les incorporer dans la DLL ou l'EXE final. –

+0

Je cherchais désespérément ce .. – viky

11

Vous pouvez compiler le code XAML en créant un fichier de projet MSBuild qui le référence. C'est ce qui se passe dans Visual Studio "sous les couvertures" lorsque vous compilez sur votre projet (il crée un fichier .proj temporaire et le construit).

Un fichier de projet assez minime (xamlcompile.csproj) est quelque chose comme ceci:

<?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> 

Et vous pouvez alors générer le fichier BAML en exécutant la commande:

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

Cela va créer un Fichier baml sous obj \ Debug, dans l'exemple ci-dessus ce sera obj \ Debug \ Themes \ Generic.baml.

Espérons que ça aide.