【问题标题】: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 所述,但结果没有改变。

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

【问题讨论】:

    标签: c# visual-studio-2017 publish


    【解决方案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 文件夹。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2022-10-09
    • 2021-09-07
    相关资源
    最近更新 更多