我使用的烧包的MSI。 我使用还愿(Visual Studio中)我自己的自定义BA,而不是WiXBA。 我尝试使用调试定制BA Debugger.Launch()
但是,当我开始调试,会出现错误信息。
无符号被加载的任何调用堆栈帧。 无法显示的源代码
我意识到package.exe链接CustomBA DLL其中位于C:\Documents and Settings\user\Local Settings\Temp\{GUID}\
。 {GUID}
总是改变。 所以,每当我跑package.exe,总目录被改变。
我认为这是错误发生的原因。
在Visual Studio中,当我开始package.exe与位于绝对路径(CustomBA DLL .../Debug/bin/CustomBA.dll
)。 但执行后package.exe,它链接到Local Settings\Temp\{GUID}
目录。 所以,当我们开始调试和连接到CustomBA DLL,DLL CustomBA的目录是动态变化的,并No symbols are loaded
会出现误差。
- 为什么package.exe链接DLL它位于
C:\Documents and Settings\user\Local Settings\Temp\{GUID}\
? 我们可以选择的dll静态路径? - 如果我们不能选择dll路径静态,我怎么可以使用CustomBA调试功能?
要调试引导器应用,你会希望你的包.wixproj和BA .csproj的两个(或.vcxproj如果你正在做一个本地的.dll)在相同的解决方案和包项目应该依赖于BA项目,以便重建正常工作。 下面的步骤应该让你步入你的代码。
注意:请确保您没有运行Visual Studio的升高。 如果你有UAC禁用,重新启用它。 如果Visual Studio正在运行升高这些步骤将无法正常工作。
- 重建该项目。 这可确保您有里面的更新BA.dll创造了一个包。
- 右键单击Solution Explorer中的BA的.csproj并选择
Set as StartUp Project
。 广管局的.csproj要大胆。 - 右键单击BA的.csproj,并选择
Properties
。 - 在
Properties
为BA的.csproj选择Debug
选项卡。 - 在
Debug
选项卡,选择单选按钮Start external program
- 浏览到您的包构建的路径。
现在,你可以按F5键并开始调试。 请记住,你改变了BA的.csproj任何时候,你还需要确保.wixproj重建的捆绑。 否则,包将与您的旧BA在它启动和调试器会发现新建BA的.pdbs不匹配。
附加题:如果你禁用Just My Code
在调试器设置和下载您的WiX的匹配构建的pdbs.zip和sources.zip安装,可以通过实际刻录码步骤,以及你的BA看到的一切是如何工作的一起。
我跟Rob的建议,在这个岗位,但遗憾的是我不能让它为我工作(的Visual Studio 2015年,维克斯3.10.3,管理使用WixWPF引导器应用)。 无断点击中过。 我注意到调试器附有自己错误的过程中,安装有两个正在运行的进程(即时猜测的BA和包)。 当我改变的过程中断点被击中,但我的管理BA有代码,我要调试的调试器实际上得到连接之前
香港专业教育学院设法找到一个解决方案,应用程序将无法启动,直到调试器附加。 我把这个代码在我的构造函数的代码隐藏文件(在DEBUG块)为我管理的BA是这样的...
public MainWindow()
{
#if DEBUG
// Do not start until debugger attached
while(!System.Diagnostics.Debugger.IsAttached)
{
System.Threading.Thread.Sleep(1000);
}
#endif
InitializeComponent();
InstallData = new InstallerInfo();
}
现在,当我同捆一起编译我的管理引导器应用(含调试),然后运行它,应用程序将无法启动,直到您连接到管理引导器应用Tools > Attach to Process > Find your exe in the list
。
你不能从Visual Studio调试模式运行您的自定义BA。
你可以做的是运行生成的exe文件,然后安装Visual Studio中的过程,会让你调试。 (在菜单: Tools > Attach to Process > Find your exe in the list
)