如何确定我的WPF(xbap)应用程序是从哪个文件夹启动的?

14 浏览
0 Comments

如何确定我的WPF(xbap)应用程序是从哪个文件夹启动的?

我已经调查了几个小时。我找到了很多链接,包括几个在SO上的链接,声称可以显示如何找到启动路径或应用程序目录。所有建议的解决方案都返回一个位置:\nC:\\Users\\<我的用户名>\\AppData\\Local\\Apps\\2.0\\XO8PWL8B.5HH\\1GZX7M0H.N1J\\<临时位置>\\\n当我的WPF xbap从远程位置运行时。我需要确定远程位置的实际文件夹。\n我将其部署到内部服务器ABCDEF,所以为了运行此应用程序,我输入:\n

\\ABCDEF\myApp.xbap

\n我想以编程的方式确定服务器和文件夹。我之所以这样做是因为每次发布一个带有\"自动增加修订版本\"的WPF时,额外的DLL所在的文件夹都会更改,这些DLL是这个程序所依赖的其他程序。\n我希望能够动态确定正确的文件夹。\n我尝试过:\n

'Dim path As String = Reflection.Assembly.GetEntryAssembly().Location
'Dim Path As String = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
'System.IO.Path.GetDirectoryName(System.Reflection. Assembly.GetExecutingAssembly.Location)
'application.StartupPath

\n所有这些都没有起作用。\n这些链接中提到了我尝试过的许多方法:\n链接1\n链接2\n链接3\n链接4\n链接5

0
0 Comments

问题的出现原因:确定WPF(xbap)应用程序启动的文件夹路径。

解决方法:

我采用了以下方法:

string exePath = System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName;
string dir = Path.GetDirectoryName(exePath);

0
0 Comments

问题的原因是,虽然WPF(xbap)应用程序是通过ClickOnce进行部署的,但是System.Deployment.Application.ApplicationDeployment.CurrentDeployment对象并没有直接提供应用程序所在的文件夹位置。因此,需要通过一些额外的工作来确定应用程序所在的文件夹。

解决方法是,首先使用System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory获取到数据文件夹的路径,然后从该路径中获取到粗体部分的文件夹名字。接下来,通过该文件夹名字找到应用程序所在的文件夹,该文件夹包含了应用程序的可执行文件。

作者建议创建一个函数来实现这个过程,该函数接受第一个文件路径作为参数,确定随机生成的文件夹名字,并根据该文件夹名字找到包含可执行文件的应用程序所在的文件夹。

作者认为在ApplicationDeployment类型上创建一个扩展方法是合适的。

希望这能帮到你。

0