在调试中的 ASP.NET MVC 应用程序中使用时 dll 中 exe 的路径

发布于 2024-12-03 18:42:43 字数 561 浏览 2 评论 0原文

我已经为第 3 方 exe 编写了一个包装器。该exe位于我的类库项目内的一个文件夹中,并与dll一起部署。

对启动包含此 exe 的进程的方法进行单元测试工作正常,但是当我通过 Web 应用程序使用内部的 dll 时,无法找到 exe。

调试我发现从我的 Web 应用程序使用时 exe 的路径不正确。

我已经尝试过:

string processPath = Path.Combine(Environment.CurrentDirectory, @"folder\file.exe");

并且

string processPath = Path.GetFullPath(@"folder\file.exe");

简单地说:

var processStartInfo = new ProcessStartInfo(@"folder\file.exe");

是否可以使用某些东西来引用相对于 dll 存储位置的文件夹(即在我的网络应用程序的 bin 中)?

I've written a wrapper for a 3rd party exe. The exe is in a folder inside my class library project and is deployed with the dll.

Unit testing the method that starts the process containing this exe works fine but when I use the dll inside by web application, the exe cannot be found.

Debugging I see that the path to the exe is not correct when used from my web application.

I've tried:

string processPath = Path.Combine(Environment.CurrentDirectory, @"folder\file.exe");

and

string processPath = Path.GetFullPath(@"folder\file.exe");

as well as simply:

var processStartInfo = new ProcessStartInfo(@"folder\file.exe");

Is there something I can use to refer to the folder relative to where the dll is stored (i.e. in the bin for my web app)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抚笙 2024-12-10 18:42:43

可执行文件:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);

.dll

string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(MyClass)).CodeBase);

可能需要

using System.IO;
using System.Windows.Forms;
using System.IO;
using System.Reflection;

或者您可以使用:

您可以使用 ILMerge.exe 工具合并 exe 和 dll

lmerge.exe /out:C:\SomePath\TheOnlyOneExe.exe 
C:\....\bin\Debug\someexe.exe C:\....\bin\Debug\somedll.dll /t:exe

在另一篇文章中找到此内容
DLL 包含在 exe.file 中吗?

Executable:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);

.dll

string path = Path.GetDirectoryName(Assembly.GetAssembly(typeof(MyClass)).CodeBase);

might need

using System.IO;
using System.Windows.Forms;
using System.IO;
using System.Reflection;

Or You can use:

You can merge the exe and the dlls with the ILMerge.exe tool

lmerge.exe /out:C:\SomePath\TheOnlyOneExe.exe 
C:\....\bin\Debug\someexe.exe C:\....\bin\Debug\somedll.dll /t:exe

Found this on another post
DLL include in exe.file?

已下线请稍等 2024-12-10 18:42:43

使用Server.MapPath。这将返回正确的目录。

Use Server.MapPath. This will return the right directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文