2009-06-01 17 views

Respuesta

2

No es un plug-in reflector que carga ensamblajes que contienen recursos BAML (por ejemplo, asambleas de recursos localizados) y muestra el XAML correspondiente: BamlViewer

Al compilar una aplicación de WPF en Visual Studio, todos sus archivos XAML se convierten en BAML, y ese BAML luego se incorpora como un recurso en el ensamblado final DLL o EXE.

+0

en realidad, quiero lo opuesto ... –

+0

Mire en el directorio obj \ Debug de su proyecto Hans. Visual Studio genera archivos BAML y los coloca allí antes de incrustarlos en la DLL o EXE final. –

+0

Estaba buscando desesperadamente esto .. – viky

11

Puede compilar el XAML creando un archivo de proyecto MSBuild que lo haga referencia. Esto es lo que sucede en Visual Studio "under the covers" cuando haces una compilación en tu proyecto (crea un archivo .proj temporal y lo construye).

Un archivo de proyecto bastante mínima (xamlcompile.csproj) es algo como esto:

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

Y a continuación, puede generar el archivo BAML mediante la ejecución del comando:

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

Esto creará una archivo baml en obj \ Debug, en el ejemplo anterior será obj \ Debug \ Themes \ Generic.baml.

Espero que ayude.