如何在发布MVC应用程序时包含自定义文件夹?

Sam*_*lly 11 asp.net-mvc asp.net-mvc-3 visual-studio-2012

我有一个带有徽标的"上传"文件夹.我希望VS2012一键发布包含此文件夹.目前它不是.

我怎样才能做到这一点?

谢谢你的帮助.

Daa*_*anH 7

我尝试了上面所有的解决方案,但没有一个有效。我正在使用 VS2017,无法文件夹发布一些帮助文件。我编辑了项目文件 (.csproj) 并在 de 文件中的某处添加了以下行。

<ItemGroup>
    <Content Include="HelpFiles\**\*" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

当我按下发布按钮时,所有帮助文件都会复制到发布目录中。

  • 这应该是问题的答案。如此简单和优雅。不需要自定义 MSbuild 任务或其他任务。感谢分享! (2认同)

Hug*_*rio 6

转到项目属性 > 打包/发布 Web

然后选择要设置的配置组合。

下面是要部署的项目。我刚刚在这里测试了“此项目文件夹中的所有文件”,所有内容都已发布。

唯一的缺点是一切都在部署中,我不知道这是否是您想要的。


Abd*_*yed 6

我这样做是针对以Angular 6为前端的Web api项目(不是点网核心)。我的Visual Studio版本是2017年。

我创建了一个wwwroot文件夹,该文件夹中通过自定义生成操作来编译角度文件,并且该文件夹未包含在我的项目中。

我编辑了项目文件并添加了这些行。

<PropertyGroup>
    <PipelineCollectFilesPhaseDependsOn>
    CustomCollectFiles;
    $(PipelineCollectFilesPhaseDependsOn);
  </PipelineCollectFilesPhaseDependsOn>
  </PropertyGroup>

  <Target Name="CustomCollectFiles">
    <Message Text="Inside of CustomCollectFiles" Importance="high" />
    <ItemGroup>
      <_CustomFiles Include="wwwroot\**\*" />
      <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
        <DestinationRelativePath>wwwroot\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
      </FilesForPackagingFromProject>
    </ItemGroup>
  </Target>
Run Code Online (Sandbox Code Playgroud)


And*_*NET 5

我相信你需要将文件夹的"Build Action"设置为"Content":

Visual Studio项目属性中的各种"构建操作"设置是什么?它们的作用是什么?

  • 文件夹没有Build Action或者我错过了什么?只有文件. (10认同)
  • 我发现确保我的"空"文件夹包含在发布我的应用程序产生的输出中的唯一方法是向文件夹添加内容并将其标记为内容.我添加了一个名为"info.txt"的文本文件,它简单地说明了文件夹的用途("暂时包含上传的内容").现在,文件夹和文本文件包含在已发布的输出中. (8认同)
  • @Frinavale 此外,您应该将文件属性的“复制到输出目录”选项设置为“如果更新则复制” (2认同)