6

'da oluşturulan Expression-Blend 4'te WPF projesini açmaya çalışırken sorun şu anda VS 2010'da WPF projemi oluşturuyorum. İşimi işlevli GUI ile bitirdikten sonra şablonumu düzenlemek istedim Ben Blend projeyi açtığınızda Blend 4'te kontrolleri Ama designMode içinde, o Sonucu penceresinde banaVisual Studio 2010


Geçersiz XAML


anlatmak şöyle yazdı:


[ControlName] [ControlName] böyle Window olarak Projemde kullandığım varsayılan kontrolleri (listesidir bir Windows Presentation Foundation (WPF) projesi


desteklenmez , DockPanel, vb)

Bu sorunları önlemek ve WPF formlarını DesignMode Expression-Blend4'te düzenleyebilmek için ne yapmalı?

DÜZENLEME:

Olası geçici çözüm.

Blend tarafından oluşturulan ve Studio, ben VisualStudio sonraki satırla oluşturun öğrenmek zorunda olduğu boş projelerde (* .Csproj dosyası), bazıları karşılaştırılması sonra:

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 
... 

Blend kullanırken aşağıdaki satırlar: Eğer x86AnyCPU geçtiğinizdeyse beklendiği gibi

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 

Yani, Blend projesini açılacaktır.

cevap

11

Bu hata iletisini bir kez daha görmüştüm. Yüklemeyen bir yeni çözüm dosyasını karşılaştırdıktan sonra, Blend 'un için AnyCPU platformunun/yapılandırmasının tanımlanmasını gerektirdiğini keşfettim. Bu çalışmazsa, bir WPF projesi için başvurulan tüm gerekli derlemelere sahip olduğunuzdan emin olun: PresentationCore, PresentationFramework ve WindowsBase.

HTH, boşa harcanmış bir günün ardından

+1

hm, çok ilginç. Ben zaten var olan referans üzerinde bakıyorum, PresentationCore, PresentationFramework ve WindowsBase ve diğer .NET assms var., ** AMA ** orada yerleştirme 'C: \ Program yerine' [ProjectName] \ AssemblyName' Dosyalar (x86) \ Referans Montajları \ Microsoft \ Framework \ .NETFramework \ v4.0 \ AssemblyName' (onlar **! ** sarı üçgen içinde oturum açtıkları var.) Onları değiştirdikten sonra, hepsi iyi çalışıyor. – stukselbax

+0

** Gerçekten garip davranışlar: MS projelerinde doğru yol var, Blend'de aynı projeyi açtığınızda - tüm .net referansları yeniden yazılır. ** – stukselbax

+0

Tüm referanslarım berbat. :(Tüm bunları kaldırmadan ve yeniden ekleyerek yolu güncellemek için herhangi bir kolay var mı? Ayrıca bu proje karışımı her zaman açtığınızda ya da sadece bir kez düzeltmek zorunda kalmaz mı? – joshwl2003

1

bu izini bunu buldum:

bir metin düzenleyicisinde .proj dosyasını açın ve dosyanın en bakmak, orada olacağım XML'de PropertyGroup bölümlerinin bir listesi. Birincisine bir bakın, eğer x86 veya AnyCPU'dan başka bir şey varsa, AnyCPU deyin ve kaydedin.

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 

olmalıdır:

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 

Neden?% 100 emin değilim, ancak Visual Studio'nun proje dosyasının bu bölümünü değiştirmediği anlaşılıyor (eğer varsa, tam olarak bilmiyorum), çünkü UI'de yapı yapılandırmanızı seçiyorsunuz ve bunun yerine. Ancak, Expression Blend (sürüm 4'ü kullanarak) yapı yapılandırmanızı seçmenize izin vermediğinden, en üstteki seçeneği seçer. Sonuç, "Geçersiz XAML" almanız ve referanslarınızın hepsinin yanında patlama (!) Bulunmasıdır.

Kanaatimce (ve analizlerimin hatalı olduğunu bilmek) bu, Expression Blend'de bir eksikliktir. Sadece stüdyonun yapabileceği herhangi bir yapı konfigürasyonunu kullanabilmeli, aynı zamanda onu seçebilmelisiniz.

+0

Vay canına sayfa bir gün için açık ve stukselbax zaten düzenlenmiş ve birkaç saat önce aynı çözümü bulduğunu fark etmedi .... –

+0

mystics olur ... – stukselbax