2009-09-08 31 views
0

因此,我將WPF集成到我構建的Windows窗體應用程序中。我遇到的一大障礙是,當Markup編譯器在後臺生成.g.cs文件時,InitializeComponent方法被錯誤地生成。WPF XAML標記編譯器在InitializeComponent中生成了一個錯誤的URL()

這裏的系統產生什麼: 的System.Uri resourceLocater =新的System.Uri( 「/ MapWorksheet; V9.9..0;部件/控制/ geoworksheetcon」 + 「trol.xaml」,System.UriKind.Relative) ;

不正確的是URI描述符的版本部分。這可以通過刪除它或更正版本(本例中爲9.9.0.0)來工作。我試圖改變版本來調試(到9.9.1.2),但這並沒有影響工具的輸出。我確實先刪除了Obj目錄,所以我知道這個文件是新建的。

我正在尋找一種方法來糾正這種情況,目前我必須手動編輯.g.cs文件以使其正常工作。

哦,我也使用MSBuild和VS2008。

由於提前, 克里斯

回答

0

這一次是一個MSBuild配置問題。

我與我的構建工程師一起工作過,他重載了MSBuild中的AssemblyVersion屬性,導致XAML編譯任務使用了一個差的AssemblyVersion。

0

要自動執行此操作:

<Target Name="SetBuildNumber"> 
    <ReadLinesFromFile File="Properties\AssemblyInfo.cs"> 
     <Output TaskParameter="Lines" ItemName="ItemsFromFile" /> 
    </ReadLinesFromFile> 
    <PropertyGroup> 
     <Pattern>\[assembly: AssemblyVersion\(.(\d+)\.(\d+)\.(\d+).(\d+)</Pattern> 
     <In>@(ItemsFromFile)</In> 
     <Out>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</Out> 
     <AssemblyVersion>$(Out.Remove(0, 28))</AssemblyVersion> 
    </PropertyGroup> 
    <Message Text="AssemblyVersion = $(AssemblyVersion)" Importance="high" /> 
</Target> 

<Target Name="BeforeBuild"> 
    <CallTarget Targets="SetBuildNumber" /> 
</Target>