我正在创建CI构建计算机。我使用命令行来构建包含许多项目类型(wpf,表单,MFC,c#和c ++)的VS2012解决方案。
我使用以下命令行:
call "%VS110COMNTOOLS%\vsvars32.bat"
devenv.com SolutionName.sln /rebuild "Release|Mixed Platforms"
如果我查看构建输出,一切似乎都很好。与我使用VS和100%成功时相同的输出。
但是,以这种方式构建的可执行文件在运行时会出现错误,而使用Visual Studio构建的相同解决方案可以正常工作。
错误发生在显示的第一个WPF视图的InitializeComponent上。错误消息表示无效的版本字符串。我注意到生成的文件(xaml)
有所不同命令行构建(不工作):Myview.g.cs
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/ProjectName;V3.9.1.*;component/Myview.xaml", System.UriKind.Relative);
#line 1 "..\..\Myview.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
VS 2012 build(working):Myview.g.cs
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
return;
}
_contentLoaded = true;
System.Uri resourceLocater = new System.Uri("/ProjectName;component/Myview.xaml", System.UriKind.Relative);
#line 1 "..\..\Myview.xaml"
System.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
我真的不知道V3.9.1*
出现在生成的文件中的原因和方式,但似乎是问题所在。我该如何纠正?使用命令行构建时,.xaml生成的所有文件都具有相同的错误V3.9.1*
。
答案 0 :(得分:0)
我终于找到了!
我不知道我是否应该知道或者是否在文档中的某处写了,但我很高兴我终于找到了问题。
在构建解决方案的jenkins工作中,有一个名为ASSEMBLYVERSION的字符串参数。我不知道为什么,但似乎'devenv'发现了这个变量,并决定使用它。
如果我重命名这个变量,devenv将不会使用它,一切正常。