小编Fra*_*ijk的帖子

C++/C#解决方案中没有的任何CPU

我有一个包含C#和托管C++项目的解决方案.它在解决方案平台x64和x86中编译.由于它是托管C++,我想创建一个'Any CPU'解决方案并摆脱旧的解决方案.

我将C++项目链接器设置更改为x64和x86的强制安全IL映像.

接下来,使用Configuration Manager,我创建了一个名为"Any CPU"的新解决方案平台.接下来我添加了一个名为"Any CPU"的项目平台.

我继续将所有C#项目设置为"任何CPU",但对于C++我不能这样做.项目平台'Any CPU'不在下拉列表中,也没有选项'New ...'.

VS是关于它的,所以我保持它就像它并开始构建.令我惊讶的是,结果DLL(来自C++项目)是MSIL,即使C++的平台是x64.编译x32时也是如此,生成的DLL在MSIL中.

是什么赋予了?为什么我不能将C++项目设置为"任何CPU"?

c# c++ managed anycpu

16
推荐指数
2
解决办法
9560
查看次数

Wix 丢弃标记为 NeverOverWrite="yes" 的组件

我创建了一个升级软件的安装程序,但由于某种原因,XML 配置文件(我们软件的配置文件)在升级时被删除。

如果升级软件的所有功能,就会出现这种情况。我们的软件是存档类型的东西。如果我只安装该功能并升级它,一切都很好。

但是,如果我安装存档附带的所有服务并升级这些服务,那么所有配置文件(每个配置文件都位于不同的文件夹中!)都会消失。

举个例子:

<ComponentGroup Id="AutoArchiveTool" Directory="AutoArchiverFolder">
     <Component Id="C_AutoArchivingTool_Gateway_exe_config" NeverOverwrite="yes" Guid="{A62D5200-FDE0-4DA1-A04A-7FBDACEA83B2}">
       <File Id="F_AutoArchivingTool_Gateway_exe_config" Source="$(var.Gateway.TargetDir)Gateway.exe.config" KeyPath="yes"/>
     </Component>
... more script
</ComponentGroup>
Run Code Online (Sandbox Code Playgroud)

如果您记录安装程序,您甚至可以看到它被识别为“永不覆盖”:

Disallowing installation of component: {A62D5200-FDE0-4DA1-A04A-7FBDACEA83B2} since the keyfile exists and the component is marked to never overwrite existing installations
Run Code Online (Sandbox Code Playgroud)

不过升级后就没有了。我缺少什么?我已经看到了“永久”属性,但这不是我想要的。我希望安装程序在升级期间保留配置文件。删除后不要留下它们(配置文件)。

windows-installer wix upgrade

4
推荐指数
1
解决办法
1894
查看次数

标签 统计

anycpu ×1

c# ×1

c++ ×1

managed ×1

upgrade ×1

windows-installer ×1

wix ×1