成功编译Dx11.1.6 & Xaf11.1.6的方法 2WorkRoom3整理 2015-5-20 10:20
特别说明:资料出处:http://blog.youkuaiyun.com/luxy/article/details/6857700,希望大家多多支持原作,再次感谢原作者的无私奉献,谢谢;
编译Dx11.1.6没有什么难度,但编译xaf11.1.6却几经波折,经过几天摸索,并参考网上的一些资料,我终于成功的编译了DX11.1.6 & Xaf11.1.6源代码,现将我的编译过程总结一下:
1.安装环境是:XP SP3 + vs2008 + vs2010;
2.安装SILVER LIGHT 4.0开发工具;
3.备好动态链接库,如下的DLL:
ActiveReports.Interop.DLL
ActiveReports3.DLL
ActiveReports.PdfExport.dll
ActiveReports.Viewer3.dll
Microsoft.AnalysisServices.AdomdClient.dll
Microsoft.Silverlight.Testing.dll
Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
Moq.dll
nunit.framework.dll
System.Data.SQLite.DLL
把Microsoft.AnalysisServices.AdomdClient.dll和Microsoft.Silverlight.Testing.dll复制到C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0目录下。
4. 修改源代码中的乱码。
用记事本打开: \DXperience_11.1.6\Conponents\Sources\DevExpress.CodeParser.SL\CodeGen\StatementCodeGenBase.cs 和 \DXperience_11.1.6\Conponents\Sources\DevExpress.CodeParser\CodeGen\StatementCodeGenBase.cs。
找到:return name == "獵aret? || name == "獴lockAnchor?; 改成 :return name == "Caret" || name == "BlockAnchor";
5.如果是VS2010下编译xaf还要修改如下的源代码:
1). 用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.Persistent\DevExpress.Persistent.BaseImpl\DevExpress.Persistent.BaseImpl.csproj 修改 ToolsVersion="4.0" 为 ToolsVersion="3.5";
2).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.csproj 修改 ToolsVersion="3.5" 为 ToolsVersion="4.0";
3).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\DevExpress.ExpressApp.Design.ModelEditorcsproj 修改 ToolsVersion="3.5" 为 ToolsVersion="4.0";
4).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\AssemblyInfo.cs 增加一行[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
5).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\Proberties\ AssembyInfo.cs 增加一行[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
[rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的。:: 也可以起到 rem 的注释作用, 而且更简洁有效。]
6.如果是VS2010下编译xaf还要修改如下脚本:\DXperience_11.1.6\eXpressApp FrameWork\Sources\buildall.bat:
rem 这几行 cscript replace.vbs ".\DevExpress.Persistent\DevExpress.Persistent.BaseImpl\DevExpress.Persistent.BaseImpl.csproj" "ToolsVersion='4.0'" "ToolsVersion='3.5'"
cscript replace.vbs ".\DevExpress.Persistent\DevExpress.Persistent.BaseImpl\DevExpress.Persistent.BaseImpl.csproj" "<OldToolsVersion>3.5</OldToolsVersion>" ""
rem 这几行cscript replace.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.csproj" "ToolsVersion='3.5'" "ToolsVersion='4.0'"
cscript replace.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\DevExpress.ExpressApp.Design.ModelEditor.csproj" "ToolsVersion='3.5'" "ToolsVersion='4.0'"
cscript addString.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\AssemblyInfo.cs" "[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]"
cscript addString.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\Properties\AssemblyInfo.cs" "[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]"
因为已在第5点手动修改了源代码,所以这里就得注释掉,如果让脚本修改源代码,在c:盘上的临时原代码文件的第一行第一列会产生乱码,而编译是调用临时文件的,导致编译失败。我就是被这个问题困绕很久才发现的。所以把脚本中的相关语句REM掉;
7.把MICROSOFT.NET\FRMAWORK\3.5目录下的:Microsoft.CompactFramework.Build.Tasks.dll,Microsoft.CompactFramework.Common.targets,Microsoft.CompactFramework.CSharp.targets,Microsoft.CompactFramework.VisualBasic.targets复制到2.0和4.0的目录下。
8.做好上面的准备工作后就可以编译了的,为了编译成功,最好重新启动电脑,不要运行应用程序,关掉360木马防火墙。
9.如果是同时编译XAF,可以直接运行XAF的编译脚本,不需要先编译DX控件。打开defines.bat设置好路径,如果同时装vs 2010设置vsver=vs2010,运行DXperience_11.1.6\eXpressApp FrameWork\Sources\clear.bat。运行clear.bat后必须把第2点备好的dll复制到DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.dll和DXperience_11.1.6\Components\Sources\DevExpress.dll目录下。
10.运行DXperience_11.1.6\eXpressApp FrameWork\Sources\buildall.bat。
后记:经过10个步骤顺利完成编译。如果只编译Dx控件不编译XAF只要上面的1,2,3,4个步骤,然后运行DXperience_11.1.6\Components\Sources\clear.bat。复制第2点dll文件到DXperience_11.1.6\Components\Sources\DevExpress.dll目录下,运行DXperience_11.1.6\Components\Sources\buildall.bat就好;
特别说明:资料出处:http://blog.youkuaiyun.com/luxy/article/details/6857700,希望大家多多支持原作,再次感谢原作者的无私奉献,谢谢;
编译Dx11.1.6没有什么难度,但编译xaf11.1.6却几经波折,经过几天摸索,并参考网上的一些资料,我终于成功的编译了DX11.1.6 & Xaf11.1.6源代码,现将我的编译过程总结一下:
1.安装环境是:XP SP3 + vs2008 + vs2010;
2.安装SILVER LIGHT 4.0开发工具;
3.备好动态链接库,如下的DLL:
ActiveReports.Interop.DLL
ActiveReports3.DLL
ActiveReports.PdfExport.dll
ActiveReports.Viewer3.dll
Microsoft.AnalysisServices.AdomdClient.dll
Microsoft.Silverlight.Testing.dll
Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll
Moq.dll
nunit.framework.dll
System.Data.SQLite.DLL
把Microsoft.AnalysisServices.AdomdClient.dll和Microsoft.Silverlight.Testing.dll复制到C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0目录下。
4. 修改源代码中的乱码。
用记事本打开: \DXperience_11.1.6\Conponents\Sources\DevExpress.CodeParser.SL\CodeGen\StatementCodeGenBase.cs 和 \DXperience_11.1.6\Conponents\Sources\DevExpress.CodeParser\CodeGen\StatementCodeGenBase.cs。
找到:return name == "獵aret? || name == "獴lockAnchor?; 改成 :return name == "Caret" || name == "BlockAnchor";
5.如果是VS2010下编译xaf还要修改如下的源代码:
1). 用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.Persistent\DevExpress.Persistent.BaseImpl\DevExpress.Persistent.BaseImpl.csproj 修改 ToolsVersion="4.0" 为 ToolsVersion="3.5";
2).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.csproj 修改 ToolsVersion="3.5" 为 ToolsVersion="4.0";
3).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\DevExpress.ExpressApp.Design.ModelEditorcsproj 修改 ToolsVersion="3.5" 为 ToolsVersion="4.0";
4).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\AssemblyInfo.cs 增加一行[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
5).用记事本打开: \DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\Proberties\ AssembyInfo.cs 增加一行[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]
[rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的。:: 也可以起到 rem 的注释作用, 而且更简洁有效。]
6.如果是VS2010下编译xaf还要修改如下脚本:\DXperience_11.1.6\eXpressApp FrameWork\Sources\buildall.bat:
rem 这几行 cscript replace.vbs ".\DevExpress.Persistent\DevExpress.Persistent.BaseImpl\DevExpress.Persistent.BaseImpl.csproj" "ToolsVersion='4.0'" "ToolsVersion='3.5'"
cscript replace.vbs ".\DevExpress.Persistent\DevExpress.Persistent.BaseImpl\DevExpress.Persistent.BaseImpl.csproj" "<OldToolsVersion>3.5</OldToolsVersion>" ""
rem 这几行cscript replace.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.csproj" "ToolsVersion='3.5'" "ToolsVersion='4.0'"
cscript replace.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\DevExpress.ExpressApp.Design.ModelEditor.csproj" "ToolsVersion='3.5'" "ToolsVersion='4.0'"
cscript addString.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design\AssemblyInfo.cs" "[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]"
cscript addString.vbs ".\DevExpress.ExpressApp.Design\DevExpress.ExpressApp.Design.ModelEditor\Properties\AssemblyInfo.cs" "[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]"
因为已在第5点手动修改了源代码,所以这里就得注释掉,如果让脚本修改源代码,在c:盘上的临时原代码文件的第一行第一列会产生乱码,而编译是调用临时文件的,导致编译失败。我就是被这个问题困绕很久才发现的。所以把脚本中的相关语句REM掉;
7.把MICROSOFT.NET\FRMAWORK\3.5目录下的:Microsoft.CompactFramework.Build.Tasks.dll,Microsoft.CompactFramework.Common.targets,Microsoft.CompactFramework.CSharp.targets,Microsoft.CompactFramework.VisualBasic.targets复制到2.0和4.0的目录下。
8.做好上面的准备工作后就可以编译了的,为了编译成功,最好重新启动电脑,不要运行应用程序,关掉360木马防火墙。
9.如果是同时编译XAF,可以直接运行XAF的编译脚本,不需要先编译DX控件。打开defines.bat设置好路径,如果同时装vs 2010设置vsver=vs2010,运行DXperience_11.1.6\eXpressApp FrameWork\Sources\clear.bat。运行clear.bat后必须把第2点备好的dll复制到DXperience_11.1.6\eXpressApp FrameWork\Sources\DevExpress.dll和DXperience_11.1.6\Components\Sources\DevExpress.dll目录下。
10.运行DXperience_11.1.6\eXpressApp FrameWork\Sources\buildall.bat。
后记:经过10个步骤顺利完成编译。如果只编译Dx控件不编译XAF只要上面的1,2,3,4个步骤,然后运行DXperience_11.1.6\Components\Sources\clear.bat。复制第2点dll文件到DXperience_11.1.6\Components\Sources\DevExpress.dll目录下,运行DXperience_11.1.6\Components\Sources\buildall.bat就好;