WiX选择性配线和C#

WiX选择性配线和C#,c#,installation,wix,patch,C#,Installation,Wix,Patch,这是一个有点假设性的问题(等待适当的调查),但我相信它可能会引起问题 C#应用程序包含一个exe和一些DLL。VisualStudio/msbuild在每个构建(更新的时间戳/guids/etc)上构建它们略有不同,但每个构建在功能上是相同的。构建服务器处理每日/发布构建以实现一致性并减轻工作负担 在使用WiX打包和引导发布了v1.0.0之后,我修复了一些问题lib_1.dll并发布了v1.0.1。这次我还创建了一个补丁,它只包含lib_1.dll的diff,以减小文件大小。到目前为止还不错 现

这是一个有点假设性的问题(等待适当的调查),但我相信它可能会引起问题

C#应用程序包含一个exe和一些DLL。VisualStudio/msbuild在每个构建(更新的时间戳/guids/etc)上构建它们略有不同,但每个构建在功能上是相同的。构建服务器处理每日/发布构建以实现一致性并减轻工作负担

在使用WiX打包和引导发布了v1.0.0之后,我修复了一些问题
lib_1.dll
并发布了v1.0.1。这次我还创建了一个补丁,它只包含
lib_1.dll
的diff,以减小文件大小。到目前为止还不错

现在是有趣的部分

我做了进一步的修改,但这次修改为
lib_3.dll
,并发布了v1.0.2版。我做了另一个补丁,这次只包括
lib_3.dll
的diff。因此,现在将v1.0.0修补到v1.0.1是可行的,正如v1.0.1修补到v1.0.2一样,但由于每个版本略有不同,v1.0.0修补到v1.0.1修补到v1.0.2可能会失败,也可能会由于错误的差异而导致文件损坏


所以问题是:如何解决这个问题?是否有一种简单的方法来管理二进制文件,以便在安装程序中只包含真正的更改?比较忽略每次生成更改的二进制文件的某种方法?还是别的什么?

我发布了一个类似的问题。我不知道一旦你发布了1.0版,这种情况是否可以补救。但是,通过使用“确定性构建”进行构建,您的DLL不会发生这些细微的非功能性更改


有关更多信息,请参阅和。但其要点是,您需要将参数
/deterministic
标志传递给编译器,或者将
true
添加到MSbuild属性文件中的属性组中。

我发布了一个类似的问题。我不知道一旦你发布了1.0版,这种情况是否可以补救。但是,通过使用“确定性构建”进行构建,您的DLL不会发生这些细微的非功能性更改

有关更多信息,请参阅和。但要点是,您需要将参数
/deterministic
标志传递给编译器,或者将
true
添加到MSbuild属性文件中的属性组