未使用ClickOnce应用程序部署的数据文件

时间:2009-02-25 13:07:03

标签: clickonce

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

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

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

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

如果我从“数据文件”更改为所有内容文件的标准包含,那么一切都可以作为魅力。

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

System.IO.DirectoryNotFoundException未处理   Message =“系统找不到指定的路径。(HRESULT异常:0x80070003)”   来源= “mscorlib程序”   堆栈跟踪:        在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)        在System.AppDomain.SetDefaultDomainManager(String fullName,String [] manifestPaths,String [] activationData)   InnerException:

1 个答案:

答案 0 :(得分:3)

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

问题似乎也与以下事实有关:在某些子文件夹中,我有一些标记为Include的文件和一些标记为Data的文件。这可能会在部署期间导致数据文件无法部署的混淆。

最后,我要按照我想要的方式做的事情是卸载任何以前版本的应用程序。接下来,在项目中组织我的数据文件,如下所示:

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

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