所以我将WPF集成到我构建的Windows窗体应用程序中。我遇到的一个重大障碍是,当Markup编译器在后台生成.g.cs文件时,InitializeComponent方法生成错误。
以下是生成的内容: System.Uri resourceLocater = new System.Uri(“/ MapWorksheet; V9.9..0; component / controls / geoworksheetcon”+ “trol.xaml”,System.UriKind.Relative);
URI描述符的版本部分有什么不对。这可以通过删除它或更正版本(在这种情况下为9.9.0.0)来工作。我尝试稍微更改版本以调试它(到9.9.1.2),但这不会影响工具的输出。我首先删除了Obj目录,所以我知道这个文件是新创建的。
我正在寻找一种方法来解决这个问题,目前我必须手动编辑.g.cs文件才能使其正常工作。
哦,我也在使用MSBuild和VS2008。
提前致谢, 克里斯
答案 0 :(得分:0)
这是一个MSBuild配置问题。
我和我的构建工程师一起工作了,他在MSBuild中重载了AssemblyVersion属性,导致XAML编译任务使用了错误的AssemblyVersion。
答案 1 :(得分: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>