2009-06-01 14 views

Odpowiedz

2

Nie jest plug-in reflektor, który ładuje zespoły zawierające zasoby BAML (np lub zespołów zasobów miejscowe) i pokazuje odpowiedni XAML: BamlViewer

podczas kompilowania aplikacji WPF w Visual Studio, wszystko Twoje pliki XAML są konwertowane na BAML, a BAML jest następnie umieszczany jako zasób w ostatecznym zestawie DLL lub EXE.

+0

Tak naprawdę, chcę czegoś przeciwnego ... –

+0

Zobacz w katalogu obj \ Debug twojego projektu Hans. Visual Studio generuje pliki BAML i umieszcza je tam przed osadzeniem ich w ostatecznej wersji DLL lub EXE. –

+0

Rozpaczliwie szukałem tego .. – viky

11

Można skompilować XAML, tworząc plik projektu MSBuild, który się do niego odwołuje. To właśnie dzieje się w Visual Studio "pod okładkami" podczas kompilacji projektu (tworzy tymczasowy plik .proj i buduje go).

Dość minimalny plik projektu (xamlcompile.csproj) jest mniej więcej tak:

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

I można następnie wygenerować plik BAML uruchamiając polecenie:

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

To stworzy plik baml w obj \ Debug, w powyższym przykładzie będzie obj \ Debug \ Themes \ Generic.baml.

Nadzieję, że pomaga.