复制到输出目录未按预期工作

Posted

技术标签:

【中文标题】复制到输出目录未按预期工作【英文标题】:Copy to output directory not working as expected 【发布时间】:2017-12-18 16:49:48 【问题描述】:

我的网站项目设置了发布配置文件以发布到 ~\www\Website(项目源文件夹为 ~\Website)

在 ~\Website\bin 中有一个包含在项目中的 .xml 文件(它是 \bin 文件夹中的唯一文件),这是 CMS(Sitecore)所需的。

查看包含文件的属性菜单,Build Action 设置为 Content,Copy To Output 目录设置为 Copy Always

当我运行发布时,文件不会复制到 ~\www\Website\bin 而是放在 ~\www\Website\bin\bin 中。

我已尝试将项目打包/发布属性中的“要部署的项目”更改为“此项目中的所有文件”,如 here 所述,但结果没有改变。

这很令人烦恼,我一直无法理解它为什么会发生。有没有人有任何见识?谢谢。

【问题讨论】:

【参考方案1】:

“总是复制/如果更新”背后的基本逻辑是,当文件复制到输出目录时,子目录结构会被保留。位于项目子目录中的文件将复制到相同子目录结构中的输出目录中。

ProjectDir\a.txt        -> OutputDir\a.txt
ProjectDir\Subdir\b.txt -> OutputDir\Subdir\b.txt

默认情况下,bin 目录是 Web 应用程序的输出目录。因此,如果您将文件放入 bin-subdir 中,那么它将按照您的描述复制到 bin\bin 中。

为了解决这个问题,将文件移动到项目目录。它将被复制到没有子目录的输出目录(bin)中。

【讨论】:

我已经按照您的建议进行了尝试(将文件移动到项目目录 ~\Website),但是当我发布时它被复制到 ~\www\Website\ 而不是 ~\www\Website\bin\跨度> @user3188426 文件对构建操作复制到输出目录有什么设置? 按照您的建议尝试(将文件移动到项目目录 ~\Website),但在发布时将其复制到 ~\www\Website\ 而不是 ~\www\Website\bin\。我们继承了这个解决方案,它的设置方式很奇怪,所以可能是其他一些设置导致了这个问题。根据 CMS 供应商的说明,该文件是安全补丁的一部分。我与团队中的其他成员进行了交谈,他们在其他地方实施了补丁,看来这不是必需的。一种实现将文件包含在已发布的输出中,而另一种则没有,但它们都可以正常工作 构建操作设置为内容,复制到输出目录设置为始终复制。 如果您将 Build Action 设置为“None”,它将不会被复制到根文件夹;也许重建有助于将其复制到 bin 文件夹。

以上是关于复制到输出目录未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件中的通配符未按预期工作

如何找出 SQL 查询未按预期生成行的原因? [复制]

VB 选择案例未按预期工作

Litespeed 服务器上的重定向未按预期工作

将 UIImage 添加到 UIAlertView 未按预期工作

复制本地如何工作? log4net.dll 没有被复制到 MyProject 输出目录