[英]Visual studio not copying content files from indirectly referenced project
[英]Content from referenced project being removed on startup
启动应用程序时,从输出目录中删除内容时遇到问题。
在ProjectA中,我没有内容文件,只有与应用程序相关的东西。
在ProjectB中,我有文件Resources / js / x.js和Resources / js / y.js
在ProjectC中,我有文件Resources / js / z.js
所有文件均已设置为“内容”和“始终复制”。
ProjectA引用ProjectB和ProjectC。
当我构建/重建/清理+重建解决方案时,文件x.js , y.js和z.js最终出现在ProjectA的输出目录中。 正如它应该; 一切都很好。
但是,当我单击以启动ProjectA时,文件z.js 从输出目录中删除了 。
我没有构建前/构建后事件,在“构建”选项卡日志中也看不到任何东西。 应用程序中也没有删除文件的代码。 即使有,为什么专门删除该文件也没有意义。
有人可以帮我弄清楚发生了什么吗?
提前致谢!
首先,我创建了一个包含三个项目的解决方案,即ProjectA引用了您所描述的ProjectB和ProjectC,但是无法重现您的问题。 我看到了两种可能的解决方案。
您可以将x.js,y.js和z.js 文件作为链接添加到ProjectA,然后在ProjectA中将“复制到输出目录”属性设置为“始终复制”。 这样,ProjectA将强制将副本复制到ouput目录,而不是依赖于引用的项目代表其复制文件。
在VS2013外部运行ProjectA.exe并在启动后使用Debug-> Attach to Process连接调试器...
(在您的情况下,实际上不建议使用,但可以选择)您可以将文件切换为嵌入式资源,然后在运行时使用如下代码将其写入磁盘:
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.