2009-06-01 9 views

risposta

2

C'è un riflettore plug-in che carica assemblee contenenti risorse BAML (ad esempio assemblee di risorse localizzate) e l'indicazione del corrispondente XAML: BamlViewer

Quando si compila un'applicazione WPF in Visual Studio, tutti i file XAML vengono convertiti in BAML e BAML viene quindi incorporato come risorsa nell'assembly DLL o EXE finale.

+0

in realtà, voglio il contrario ... –

+0

Cerca nella directory obj \ Debug del tuo progetto Hans. Visual Studio genera file BAML e li inserisce prima di incorporarli nella DLL o EXE finale. –

+0

stavo cercando disperatamente questo .. – viky

11

È possibile compilare XAML creando un file di progetto MSBuild che lo faccia riferimento. Questo è ciò che accade in Visual Studio "sotto le copertine" quando esegui una compilazione sul tuo progetto (crea un file .proj temporaneo e lo costruisce).

Un file di progetto piuttosto limitata (xamlcompile.csproj) è qualcosa di simile:

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

e si può quindi generare il file BAML eseguendo il comando:

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

Questo creerà un baml file sotto obj \ Debug, nell'esempio sopra sarà obj \ Debug \ Themes \ Generic.baml.

Spero che questo aiuti.