繁体   English   中英

启动时从引用项目中删除内容

[英]Content from referenced project being removed on startup

启动应用程序时,从输出目录中删除内容时遇到问题。

在ProjectA中,我没有内容文件,只有与应用程序相关的东西。

在ProjectB中,我有文件Resources / js / x.jsResources / js / y.js

在ProjectC中,我有文件Resources / js / z.js

所有文件均已设置为“内容”和“始终复制”。

ProjectA引用ProjectB和ProjectC。

当我构建/重建/清理+重建解决方案时,文件x.jsy.jsz.js最终出现在ProjectA的输出目录中。 正如它应该; 一切都很好。

但是,当我单击以启动ProjectA时,文件z.js 从输出目录中删除了

我没有构建前/构建后事件,在“构建”选项卡日志中也看不到任何东西。 应用程序中也没有删除文件的代码。 即使有,为什么专门删除该文件也没有意义。

有人可以帮我弄清楚发生了什么吗?

提前致谢!

首先,我创建了一个包含三个项目的解决方案,即ProjectA引用了您所描述的ProjectB和ProjectC,但是无法重现您的问题。 我看到了两种可能的解决方案。

  1. 您可以将x.js,y.js和z.js 文件作为链接添加到ProjectA,然后在ProjectA中将“复制到输出目录”属性设置为“始终复制”。 这样,ProjectA将强制将副本复制到ouput目录,而不是依赖于引用的项目代表其复制文件。

  2. 在VS2013外部运行ProjectA.exe并在启动后使用Debug-> Attach to Process连接调试器...

  3. (在您的情况下,实际上不建议使用,但可以选择)您可以将文件切换为嵌入式资源,然后在运行时使用如下代码将其写入磁盘:

     static void Main(string[] args) { var assembly = Assembly.GetExecutingAssembly(); var resourceName = "readEmbeddedResourceFile.Resources.MyFile.txt"; using (Stream stream = assembly.GetManifestResourceStream(resourceName)) { if (null != stream) { byte[] b1 = new byte[stream.Length]; // creat an array to hold the file stream.Read(b1, 0, (int)b1.Length); // read the file from the embedded resource File.WriteAllBytes("MyFile.txt", b1); // write the file to the current execution directory } } } 

由于Start通常会生成任何过时的项目,因此这种部分生成是否有可能导致文件被删除? 您可以浏览“选项”->“项目和解决方案”->“构建并运行”,以查看这些设置之一是否可以帮助解决问题。 这是我的样子(不删除文件) 在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM