我正在使用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
错误。
C:\Documents andSettings\user\Local Settings\Temp\{GUID}\
的dll?我们可以选择路径吗为DLL静态?
CustomBA的功能?
最佳答案
要调试Bootstrapper应用程序,您需要在同一解决方案中同时使用Bundle .wixproj和BA .csproj(如果使用本机.dll,则要使用.vcxproj),并且Bundle项目应依赖于BA项目,因此可以重新构建正常工作。以下步骤应使您可以进入代码。
注意:确保您没有运行提升的Visual Studio。如果您禁用了UAC,请重新启用它。如果Visual Studio运行提升,则这些步骤将无法正常工作。
Set as StartUp Project
。 BA .csproj应该为粗体。 Properties
。 Properties
上,选择Debug
选项卡。 Debug
选项卡中,选择标记为Start external program
的单选按钮现在,您可以按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/