如何确定我的WPF(xbap)应用程序是从哪个文件夹启动的?
如何确定我的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
问题的原因是,虽然WPF(xbap)应用程序是通过ClickOnce进行部署的,但是System.Deployment.Application.ApplicationDeployment.CurrentDeployment对象并没有直接提供应用程序所在的文件夹位置。因此,需要通过一些额外的工作来确定应用程序所在的文件夹。
解决方法是,首先使用System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory获取到数据文件夹的路径,然后从该路径中获取到粗体部分的文件夹名字。接下来,通过该文件夹名字找到应用程序所在的文件夹,该文件夹包含了应用程序的可执行文件。
作者建议创建一个函数来实现这个过程,该函数接受第一个文件路径作为参数,确定随机生成的文件夹名字,并根据该文件夹名字找到包含可执行文件的应用程序所在的文件夹。
作者认为在ApplicationDeployment类型上创建一个扩展方法是合适的。
希望这能帮到你。