我正在使用Burn for MSIs软件包。我使用的是Votive(Visual Studio)和我自己的自定义BA,而不是WiXBA。我尝试使用Debugger.Launch()调试自定义BA。但是,当我开始调试时,会出现错误消息。



我意识到package.exe链接了位于C:\Documents and Settings\user\Local Settings\Temp\{GUID}\的CustomBA dll。 {GUID}始终更改。因此,每当我运行package.exe时,总会更改目录。

我认为这是发生错误的原因。

在Visual Studio中,当我使用位于绝对路径(.../Debug/bin/CustomBA.dll)的CustomBA dll启动package.exe时。但是在执行package.exe之后,它会链接到Local Settings\Temp\{GUID}目录。因此,当我们开始调试并附加到CustomBA dll时,CustomBA dll的目录将动态更改,并发生No symbols are loaded错误。

  • 为什么package.exe链接位于C:\Documents andSettings\user\Local Settings\Temp\{GUID}\的dll?我们可以选择路径吗
    为DLL静态?
  • 如果我们不能静态选择dll路径,我该如何使用调试
    CustomBA的功能?
  • 最佳答案

    要调试Bootstrapper应用程序,您需要在同一解决方案中同时使用Bundle .wixproj和BA .csproj(如果使用本机.dll,则要使用.vcxproj),并且Bundle项目应依赖于BA项目,因此可以重新构建正常工作。以下步骤应使您可以进入代码。

    注意:确保您没有运行提升的Visual Studio。如果您禁用了UAC,请重新启用它。如果Visual Studio运行提升,则这些步骤将无法正常工作。

  • 重建项目。这样可以确保您创建的包中包含更新的BA.dll。
  • 在解决方案资源管理器中的BA .csproj上单击鼠标右键,然后选择Set as StartUp Project。 BA .csproj应该为粗体。
  • 右键单击BA .csproj,然后选择Properties
  • 在BA .csproj的Properties上,选择Debug选项卡。
  • Debug选项卡中,选择标记为Start external program的单选按钮
  • 浏览到构建 bundle 包的路径。

  • 现在,您可以按F5键并开始调试。请记住,每次更改BA .csproj时,都还需要确保Bundle .wixproj被重建。否则, bundle 包将与您的旧BA一起启动,调试器将发现新构建的BA的.pdbs不匹配。

    额外的功劳:如果您在调试器设置中禁用Just My Code并下载Widb安装的匹配版本的pdbs.zip和sources.zip,则实际上可以逐步执行Burn代码以及BA,以查看所有功能如何协同工作。

    关于wix - 如何调试自定义 bootstrap 应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11001980/

    10-12 03:51