[英]Application works when started locally or from mapped network drive but not from UNC path
我有一个奇怪的问题,无法在互联网上找到任何解决方案。
对于一个问题,这可能并不重要,但是我想提一下,我有两个单独的项目,并决定将它们组合为一个解决方案。 这两个项目都是简单的winform应用程序。 它们在编译后分别工作:在调试期间直接在Visual Studio中(无论是在调试或发布模式下),在调试器外部进行本地化以及将它们复制到本地网络上的某个文件夹之后。
但是,合并它们后,其中一个应用程序从网络启动时便停止工作。
我将调试器附加到已经运行的进程中,发现:
Private Sub InitializeComponent()
Partial Class frmMain
中的frmMain.Designer.vb
中的代码可以正常工作。 通过在Sub
的开头创建一个断点并逐步遍历代码直到End Sub
。 Public Class frmMain
frmMain.vb
中的代码, Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Public Class frmMain
中的代码Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
不会触发。 从InitializeComponent()
(第1点)出来后,代码不输入frmMain_Load
。 主窗体显示在屏幕上,带有所有控件,但未初始化/清除,没有图标等。 通过单击“ X”关闭子窗体不会关闭窗体(通常会关闭)。 在同一子窗体上单击cmdClose
按钮将关闭该窗体。 按钮的DialogResult
属性设置为Cancel
。 窗体本身具有设置为cmdClose
CancelButton
属性。 按ESC
也将关闭该窗体。
Private Sub cmdClose_Click(sender As Object, e As EventArgs) Handles cmdClose.Click Me.Dispose() End Sub
关闭主窗体(无论通过“ X”, cmdClose
按钮还是ESC
)都将挂断应用程序。
Private Sub cmdClose_Click(sender As Object, e As EventArgs) Handles cmdClose.Click Me.Close() End Sub
如果我打开Windows资源管理器,然后从映射的驱动器Y:\\folder
转到共享网络驱动器上应用程序的最终位置,然后从那里启动应用程序-它可以工作。
\\\\server\\share-name\\folder
选择相同的最终目标,然后从那里启动应用程序-它不起作用。 target path
。 Windows 7,.Net Framework 4.5。
您是否有解决方法以及错误在哪里的线索?
我决定从应用程序可执行文件中提取图标,而不是像以前那样从资源中提取图标,以避免将两次相同的图标文件添加到可执行文件中:首先作为应用程序图标添加到Project / Properties / Application / Icon中,然后作为表单添加图标添加在项目/属性/资源中。
问题是,如果在代码的任何位置(在我的示例中为Private Sub form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
),则添加
Me.Icon = Icon.ExtractAssociatedIcon(Assembly.GetExecutingAssembly().Location)
它不适用于返回的UNC路径
System.ArgumentException
The filePath does not indicate a valid file or the filePath indicates a Universal Naming Convention (UNC) path.
关闭表单后,运行时发生错误。 方法
Assembly.GetExecutingAssembly().Location
返回正确的路径(例如\\\\server\\share-name\\folder
字符串),但是方法
Public Shared Function ExtractAssociatedIcon(filePath As String) As Icon
不接受UNC路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.