2

我有一个使用 ClickOnce 部署的 WinForms 应用程序。在应用程序项目中,我有一些文件标记为内容,在发布设置的应用程序文件对话框中也标记为“数据文件”。我还有一些标记为“包含自动”的内容文件。

当我发布时,安装应用程序,然后执行它在启动时立即崩溃,并出现 DirectoryNotFoundException(下面的完整堆栈跟踪)。

查看应用程序文件夹,我可以找到所有标记为“包括自动”的文件,与可执行文件一起整齐地放置。虽然没有安装标记为“数据文件”的文件(我已经检查了可执行文件夹和数据文件夹)。

请注意,发布和安装都是从我本地计算机上的文件夹完成的,而不是通过网站完成的。

如果我在所有内容文件上从“数据文件”更改为标准包含,那么一切都像一个魅力。

我正在运行(喘气)Windows XP SP3 和 .Net 3.5 SP1。

System.IO.DirectoryNotFoundException 未处理 Message="系统找不到指定的路径。(来自 HRESULT 的异常:0x80070003)" Source="mscorlib" StackTrace:在 System.Deployment.Internal.Isolation.IActContext.SetApplicationRunningState(UInt32 dwFlags, UInt32 ulState, UInt32& ulDisposition) 在 System.ActivationContext.SetApplicationState(ApplicationState s) 在 System.AppDomain.SetupDomainForApplication(ActivationContext activationContext, String[] activationData) 在 System.AppDomain.SetupApplicationHelper(Evidence providedSecurityInfo, Evidence creatorsSecurityInfo, ApplicationIdentity appIdentity, ActivationContext activationContext, String [] activationData) 在 System.AppDomain.SetDomainManager(Evidence providedSecurityInfo, Evidence creatorsSecurityInfo,IntPtr parentSecurityDescriptor, Boolean publishAppDomain) at System.AppDomain.SetDefaultDomainManager(String fullName, String[] manifestPaths, String[] activationData) InnerException:

4

1 回答 1

3

经过一些反复试验后,我发现当我的数据文件位于子文件夹的子文件夹中时,会发生 DirectoryNotFound 异常。如果数据文件位于项目根目录或第一级子文件夹中,一切都会按预期工作。

问题似乎也与以下事实有关:在其中一些子文件夹中,我有一些文件标记为 Include,一些文件标记为 Data。这可能会在部署过程中导致一些混乱,其中数据文件没有被部署。

最后,我必须做的是卸载任何以前版本的应用程序。接下来,像这样在项目中组织我的数据文件:

\Testfiles\Filegroup1\data1.txt
\Testfiles\Filegroup1\data2.txt
\Testfiles\Filegroup2\moredata1.txt
\Testfiles\Filegroup2\moredata2.txt

然后我将每个文件夹中的所有文件标记为数据。现在一切都很好地部署了,加载程序在启动时不会崩溃。

于 2009-02-25T22:40:11.510 回答