6

我在VS 2010中創建了我的WPF項目。完成我的功能GUI工作後,我想編輯我的模板在Blend 4控件但是當我在Blend中打開項目,將designMode,他告訴我嘗試在Visual Studio 2010中創建的Expression Blend 4中打開WPF項目時遇到問題


無效XAML


在結果窗口中寫道:


[控件名稱]中的Windows Presentation Foundation(WPF)項目


其中[控件名稱]是默認控件,這是我在我的項目已經使用(如窗口列表不支持,DockPanel等)

該怎麼做才能避免這個問題,並且能夠在Expression-Blend4的DesignMode中編輯WPF表單?

編輯:

可行的解決方法。

後空項目(* .csproj的文件),這是由Blend創建和Studio,我必須找出VisualStudio與下一行創建它的一些比較討論:

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

同時混合使用下面幾行:

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

所以,如果你改變x86AnyCPU,Blend會如預期打開項目。

回答

11

我以前只看到過這個錯誤信息。比較新的解決方案文件和不會加載的文件後,我發現Blend 要求要求定義AnyCPU平臺/配置。

如果這不起作用,請確保您具有爲WPF項目引用的所有必需的程序集:PresentationCore,PresentationFrameworkWindowsBase

HTH,

+1

嗯,很有意思。我查看了已經存在的引用,存在着PresentationCore,PresentationFramework和WindowsBase,以及其他.NET框架。**但是**放置位置是'[ProjectName] \ AssemblyName',而不是'C:\ Program文件(x86)\參考程序集\ Microsoft \ Framework \ .NETFramework \ v4.0 \ AssemblyName'(他們有**!**登錄黃色三角形。)我改變它們後,它的一切正常。 – stukselbax

+0

**非常奇怪的行爲:在MS VS程序集中有正確的路徑,當在Blend中打開同一個項目時 - 所有的.net引用都被重寫。** – stukselbax

+0

我所有的引用都搞砸了。 :(有沒有任何簡單的方法來更新路徑而不刪除它們並重新添加它們?每次當你打開你的項目時你會發生這種情況嗎?或者你只需​​要修復一次? – joshwl2003

1

一個浪費一天後跟蹤下來,我發現這一點:

在文本編輯器打開該文件.proj並看看文件的最頂端,將有XML中的PropertyGroup部分列表。看看第一個,如果它表示x86或AnyCPU以外的任何其他,請將其更改爲AnyCPU並保存。

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

應該是:

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

爲什麼?我不是100%確定的,但似乎Visual Studio不會修改這部分項目文件(如果是這樣,我不知道具體時間),因爲您在界面中選擇了構建配置,並且它使用相反。然而,由於Expression Blend(使用版本4)不允許你選擇你的構建配置,它只是選擇最好的配置。結果是你得到了「無效的XA​​ML」,並且你所有的引用都在它們旁邊有爆炸聲(!)。

在我看來(並且知道我的分析可能有缺陷),這是Expression Blend中的一個缺陷。它不僅能夠使用工作室可以使用的任何構建配置,還應該能夠選擇它。

+0

哇,我有這個頁面打開了一天,並沒有意識到,stukselbax已經編輯,幾個小時前找到了同樣的解決方案.... –

+0

神祕主義發生... – stukselbax

相關問題