我在启动应用程序时遇到从输出目录中删除内容的问题。
在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 文件从输出目录中删除。
我没有预制/后期制作活动,而且#34; Build"标签日志。应用程序中没有代码可以删除文件;即使有,也没有理由删除该文件的原因。
有人可以帮我弄清楚发生了什么吗?
提前致谢!
答案 0 :(得分:1)
首先,我创建了一个包含三个项目的解决方案,ProjectA引用了ProjectB和ProjectC,但是无法重现您的问题。我看到了几种可能的解决方案。
您可以将x.js,y.js和z.js files as links添加到ProjectA中,然后设置"复制到输出目录"财产到"永远复制"在ProjectA中。通过这种方式,ProjectA将强制复制到输出目录,而不是依赖于引用的项目来代表它复制文件。
在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通常构建任何过时的项目,这个部分构建是否有可能导致文件被删除?您可以浏览选项 - >项目和解决方案 - >构建并运行,以查看其中一个设置是否有助于解决问题。这是我的样子(没有文件删除)