devexpress源码重编译是啥意思

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了devexpress源码重编译是啥意思相关的知识,希望对你有一定的参考价值。

本文以DevExpress 11.1.8举例 必须满足几个条件
1、 必须有DXperience相应版本的全部源代码SourceCode。把全部源代码复制到X:\\Program Files\\DevExpress XXX\\Components\\Sources目录。目标目录的默认位置是在C:\\Program Files\\DevExpress 20XX\\Components\\Sources(其中X.X为应替换相应的版本号,以下不再重复说明)。

2、 必须有一个强名称的文件。该文件可以是你自己生成的,或者是团队项目中约定的某人生成的文件。要创建此文件,必须执行下面的命令建立你自己的密钥:sn -k StrongKey.snk并且复制新生成的强命名密钥StrongKey.snk文件到Sources目录下的/ Devexpress.Key /目录。该强名称Sn.exe工具位于/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin目录。当然如果是约定的某人生成的文件则直接将文件复制到/ Devexpress.Key /即可。PS。该文件拥有一个对应的PublicKeyToken之后也要使用。

3、 解压编译脚本。将下载的相应版本的编译脚本压缩包解压,然后将所有文件复制到DXperience安装目录的Sources子目录下。

下面开始处理
===============================================================================================
如果之前已安装过其它版本的DevExpress要执行清除程序集的步骤,如果是初次安装可以跳过这一步
运行C:\\Program Files\\DevExpress 2011.1\\Components\\Sources\\clear.bat
注:执行该步骤时如果出现“程序集锁定”的提示请关闭正在运行的程序,重启IIS Admin 服务,然后在执行一次clear.bat

===============================================================================================

执行C:\\Program Files\\DevExpress 2011.1\\Components\\Sources\\buildall.cmd
等待执行完毕,执行完毕后会生成两个文件
C:\\Program Files\\DevExpress 2011.1\\Components\\Sources\\PublicKeyToken.txt -- 公钥文件
C:\\Program Files\\DevExpress 2011.1\\Components\\Sources\\DevExpress.Key\\StrongKey.snk -- 私钥文件

===============================================================================================

打开PublicKeyToken.txt,复制那一串字符如:aea63221faec5671 共16位

在命令行运行如下命令替换公钥
"%ProgramFiles%\\DevExpress 2011.1\\Components\\Tools\\DXperience\\ProjectConverter-console.exe" /r /k:<换成你的公钥> "<源码解压的目录>"
在这里我的是这样
"%ProgramFiles%\\DevExpress 2011.1\\Components\\Tools\\DXperience\\ProjectConverter-console.exe" /r /k:233e5082d2bfa4a0 "%ProgramFiles%\\DevExpress 2011.1\\Components\\Sources"
至此控件部分已经从新编译完毕。但是Demo却不能运行了,若要查看Demo就使用公钥对Demo重新编译一次就可以了

编译完源文件后要
开始 → 程序 → Developer Express v2011 vol 1 → Components → Tools → ToolboxCreator
重建下IDE的工具栏
更新以前项目的公钥
经过重新编译后的DevExpess控件私钥和公钥都已经改变,如果在编译前使用过DevExpess的控件,在编译后将无法继续使用
我们可以通过DevExpress的升级工具对项目进行升级,步骤如下:
开始 -> 程序 -> Developer Express v2011 vol 1 -> Components -> Tools -> ProjectConverter

打开 Project Convert (11.1.6.0) 后可以按单个项目(Project folder)升级或多个项目同时升级(Folder list)
勾选 show advanced option(显示高级选项) 后在 Custom public key token 栏输入
C:\\Program Files\\DevExpress 2011.1\\Components\\Sources\\PublicKeyToken.txt 文件中的公钥值 如:233e5082d2bfa4a0
Hint path behavior 选择 Upldate ,然后点击右下角的 Upgrade 按钮,等待程序替换公钥完毕后就可以了
参考技术A DevExpress相关的问题可以到dev中文网或者搜索evgetedu,这个网站资源比较多

“无法编译连接:”错误是啥意思?

【中文标题】“无法编译连接:”错误是啥意思?【英文标题】:What does the "Couldn't compile connection:" error mean?“无法编译连接:”错误是什么意思? 【发布时间】:2012-03-03 10:39:35 【问题描述】:

我从 Xcode 收到以下错误:

Couldn't compile connection: <IBCocoaTouchOutletConnection:0x401538380
<IBProxyObject: 0x40154a260> => categoryPicker => <IBUIPickerView: 0x4016de1e0>>

我已将其缩小到情节提要中的单个插座连接。我的代码(大约 30 个具有许多其他连接的视图)编译并运行良好,直到我将 UIPicker 的连接添加到视图的 categoryPicker 属性。选择器本身也可以正常工作,我无法重新加载它而不使此连接正常工作:

@interface FiltersTableViewController : UITableViewController <UIPickerViewDataSource, UIPickerViewDelegate> 
    NSFetchedResultsController *fetchedResultsController;
    FilterTableViewController *filterView;

    AppDelegate *appDelegate;
    NSManagedObjectContext *managedObjectContext;       


@property (nonatomic, strong) FilterTableViewController *filterView;
@property (nonatomic, strong) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, strong) NSManagedObjectContext *managedObjectContext;

@property (nonatomic, weak) IBOutlet UIPickerView *categoryPicker;

- (void)configureCell:(FilterTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath;
- (void)performFetch;

@end

UIPickerView 位于 UITableViewCell 中。这是情节提要的图像,从“categoryPicker”到“FiltersTableViewController”的连接会导致错误:

感谢您提供有关如何调试它的任何想法或建议!

编辑: 我删除了连接并在 numberOfComponentsInPickerView 中添加了一行:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

    categoryPicker = pickerView;

    return 1;

现在可以正常工作了!但我想了解连接无法正常工作的原因以及该错误消息的含义。现在这对我来说似乎是一个杂物,因为我在其他任何地方都使用 IB 连接来获取对象引用。

编辑 2: 连接原型单元会生成此错误:非法配置:连接“单元”不能将原型对象作为其目标。不确定这是否是 Xcode 4.5 中的新功能。

【问题讨论】:

似乎问题是,categoryPicker 是“弱”而 FilterTableViewController 是“强”。尝试使 categoryPicker 也变得强大并检查它是否有效 谢谢。刚试过,但它并没有改变任何东西。 (我的印象是 IBOutlets 应该很弱......我从这里得到:raywenderlich.com/5773/beginning-arc-in-ios-5-tutorial-part-2)。 是的,这在技术上是正确的,对不起,我的错!正如我刚刚在 Apple 文档中看到的那样! 所以你只想将你的 ViewController 设置为 categoryPicker 的代表......我说的对吗?你试过 categoryPicker.delegate = self; ? ViewController 已经是一个委托,并且该部分有效。问题是 categoryPicker 在没有来自 IB 的连接的情况下为零,我无法在其上调用 reloadAllComponents。实际上,我确实只是得到了一些工作,但这似乎是一个杂物。我将在几秒钟内将其添加到问题中... 【参考方案1】:

问题是这是一个原型单元。在其中有一个东西的出口是没有意义的,因为它不是一个真正的细胞:它是一个可能有几十个或数百个细胞的模型,在这种情况下出口会指向哪个?

【讨论】:

谢谢!现在这是有道理的,我为这类事情使用连接的其他地方使用静态单元格。 马特,谢谢你的回答。我现在被困住了。我如何在没有插座的情况下解决标签按钮等这些对象? 使用标签并调用viewWithTag:,或子类UITableViewCell,以便每个cell都有一个指向其自己的按钮的出口。 我可以毫无问题地在原型单元上创建连接吗?那么这仍然有效吗? 你可以使用按钮的标签来识别单元格。应该允许并且应该允许来自单元原型的出口。【参考方案2】:

SWIFT 2

我正在创建一个 popover segue,但我遇到了同样的错误。

我所做的是遵循@matt 的回答,不把它放在单元格上,现在他解释了这是合乎逻辑的!

相反,我将 TableView 作为锚点,效果很好。

希望对未来的人有所帮助。

【讨论】:

感谢添加,我在 swift 2 上遇到了这个问题,我不知道为什么 很高兴它有帮助! @darkndream @PaulBrewczynski 我刚刚在 Storyboard 中添加了一个 popover segue + TableView 作为锚点,如上所述。 请注意,您可以在 prepareforSegue 到实际单元格期间更改锚点以指向正确的单元格。 (在 performSegue 中将单元格作为发件人传递;然后 segue.destinationViewController.popoverPresentationController.sourceView = (UIView *) sender

以上是关于devexpress源码重编译是啥意思的主要内容,如果未能解决你的问题,请参考以下文章

DevExpress Components16.2.6 Source Code 编译

R_X86_64_32S 和 R_X86_64_64 重定位是啥意思?

如何安装devexpress vcl 2014.1.2

405 not allowed是啥意思?要怎么解决?

delphi xe8 可以安装devexpress vcl14.2.2吗

“SuppressWarnings”是啥意思呀?