我有一个奇怪的问题,无法在互联网上找到任何解决方案。
这对于一个问题可能并不重要,但我更愿意提到我有两个独立的项目,并决定将它们合并为一个解决方案。这两个项目都是简单的winform应用程序。它们在编译后单独工作:在调试期间直接在Visual Studio中(无论是在调试模式还是发布模式下),本地调试器外部以及将它们复制到本地网络上的某个文件夹之后。
然而,在合并它们之后,其中一个应用程序在从网络启动时停止工作。
我将调试器附加到已经运行的进程并发现:
frmMain.Designer.vb
Partial Class frmMain
Private Sub InitializeComponent()
中的代码正常运行。通过在Sub
开头创建一个断点并逐步完成代码直到End Sub
来检查。frmMain.vb
中Public Class frmMain
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
中的代码未被触发。从InitializeComponent()
(第1点)出发后,代码不会输入frmMain_Load
。主屏幕显示在屏幕上,包含所有控件,但没有初始化/清理,没有图标等。点击" X"关闭儿童表格不关闭表格(通常是这样)。单击同一子表单上的cmdClose
按钮将关闭表单。按钮的DialogResult
属性设置为Cancel
。表单本身的CancelButton
属性设置为cmdClose
。按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。
您是否有任何线索如何解决它以及错误的位置?
答案 0 :(得分:0)
我决定从应用程序可执行文件中提取图标而不是之前的资源,以避免将相同的图标文件添加到可执行文件中两次:首先作为应用程序图标添加到Project / Properties / Application / Icon中作为Project / Properties / Resources中添加的表单图标。
问题是,如果在代码的任何地方(在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路径。