C#引用预构建的.exe的解决方案

C#引用预构建的.exe的解决方案,c#,projects-and-solutions,multi-project,C#,Projects And Solutions,Multi Project,我有一个项目,这是我们的应用程序的核心。我们构建了几个DLL和一个EXE 然后,我们有定制项目,使用预构建的核心DLL和EXE,并根据需要添加定制/额外位。这些自定义始终是DLL,始终使用核心EXE。核心DLL/EXE由自定义解决方案引用 在调试如何加载自定义DLL时,我遇到了一点问题。因为EXE是预构建的,所以我们使用其中一个项目作为启动项目,它指向EXE和其余DLL的位置。但是,它似乎不会加载启动项目DLL 当EXE已经生成时,我应该如何设置自定义解决方案/项目 (注意:如果您想知道,定制D

我有一个项目,这是我们的应用程序的核心。我们构建了几个DLL和一个EXE

然后,我们有定制项目,使用预构建的核心DLL和EXE,并根据需要添加定制/额外位。这些自定义始终是DLL,始终使用核心EXE。核心DLL/EXE由自定义解决方案引用

在调试如何加载自定义DLL时,我遇到了一点问题。因为EXE是预构建的,所以我们使用其中一个项目作为启动项目,它指向EXE和其余DLL的位置。但是,它似乎不会加载启动项目DLL

当EXE已经生成时,我应该如何设置自定义解决方案/项目

(注意:如果您想知道,定制DLL提供的组件是从元数据反射加载的)


更新:当前的方法是在自定义解决方案的“顶级”项目中有一个生成后事件,它将所有核心DLL和EXE复制到bin/Debug目录中。然后将顶层项目设置为启动项目,并指向bin/Debug中复制的EXE。然后它会找到DLL,因为它与EXE(以及所有其他文件)位于同一目录中。

您可以运行.EXE,然后将Visual Studio调试器附加到进程。确保.dll的.pdb位于执行目录中。

您可以运行.exe,然后将Visual Studio调试器附加到进程。确保.dll的.pdb位于正在执行的目录中。

选择一个dll作为启动项目并不以任何方式保证它实际被加载。您正在使用的EXE必须使用Assembly.Load/From()才能加载DLL。此时,调试器会介入并激活您设置的断点


从“调试+窗口+模块”窗口很容易辨别。如果您没有在该窗口中看到加载的DLL,则不会发生任何事情。您需要找出该EXE的确切配置规则,以便它将加载您要调试的DLL。

选择DLL作为启动项目并不以任何方式保证它实际加载。您正在使用的EXE必须使用Assembly.Load/From()才能加载DLL。此时,调试器会介入并激活您设置的断点


从“调试+窗口+模块”窗口很容易辨别。如果您没有在该窗口中看到加载的DLL,则不会发生任何事情。您需要了解该EXE的确切配置规则,以便它加载您要调试的DLL。

这是用于自定义解决方案的开发工作,因此附加调试器将非常烦人。我只希望能够像平常一样单击“运行/调试”,并在加载自定义DLL时启动.exe。@Mike您可以编写一个快速宏,因此您可以按一个按钮/快捷方式,它将连接到进程。这是用于自定义解决方案的开发工作,因此连接调试器将非常烦人。我只想能够像平常一样单击“运行/调试”,并在加载自定义DLL时启动.exe。@Mike您可以编写一个快速宏,因此您可以按一个按钮/快捷方式,它将连接到进程。谢谢,这很有趣,您是对的,我的DLL没有加载。我们通过一个生成后复制事件来解决这个问题,该事件将所有外部lib复制到自定义项目中“main”DLL的/bin/Debug目录中,然后将启动应用程序指向复制的EXE版本。这工作正常,但似乎有点笨拙。除了将所有内容放在同一目录中之外,我还有其他选项允许EXE在运行时“发现”我的附加DLL吗?我对EXE的了解比你少。将所有DLL放在一个目录中对我来说很正常。当然,通常的方法是在生成后事件中将它们复制到那里。或者您可以只更改DLL项目的输出路径属性。项目+属性,生成选项卡。好的,谢谢。我可以接受后期构建方法,因为它是每个项目的一次性设置。我已经习惯了Java,它看起来工作起来更流畅,可能是因为调试时需要显式的类路径,或者其他原因。谢谢,这很有趣,你说得对,我的DLL没有加载。我们通过一个生成后复制事件来解决这个问题,该事件将所有外部lib复制到自定义项目中“main”DLL的/bin/Debug目录中,然后将启动应用程序指向复制的EXE版本。这工作正常,但似乎有点笨拙。除了将所有内容放在同一目录中之外,我还有其他选项允许EXE在运行时“发现”我的附加DLL吗?我对EXE的了解比你少。将所有DLL放在一个目录中对我来说很正常。当然,通常的方法是在生成后事件中将它们复制到那里。或者您可以只更改DLL项目的输出路径属性。项目+属性,生成选项卡。好的,谢谢。我可以接受后期构建方法,因为它是每个项目的一次性设置。我已经习惯了Java,它看起来工作起来更流畅,可能是因为调试时需要显式的类路径。