【问题标题】:ASP.NET Core 2.0 MVC - how to exclude some folders from View Compilation?ASP.NET Core 2.0 MVC - 如何从查看编译中排除某些文件夹?
【发布时间】:2018-04-09 06:46:45
【问题描述】:

这是场景 - 我使用此代码 https://iamrufio.com/2017/09/08/rendering-emails-with-razorviewengine-in-net-core-2-0/(感谢作者)将视图呈现为字符串(用于电子邮件)。但是当您发布项目时,所有视图都会被编译,所以我会丢失我的视图/电子邮件/[模板]。如何在发布时排除一些正在编译(而不是部署)的文件夹?

我找到了这个https://github.com/aspnet/MvcPrecompilation 并使用了MvcRazorExcludeViewFilesFromPublish set to false,它确实有效。但是现在我已经部署了所有视图(我想知道它们是否仍然是预编译的?)。没什么大不了的,但我只会部署其中的一些。

【问题讨论】:

    标签: asp.net-core asp.net-core-2.0


    【解决方案1】:

    你可以试试这个,它对我有用。

    • 将 MvcRazorCompileOnPublish 保留为 true(默认)。
    • 排除您的文件夹 templates 包含不应包含的视图的文件夹 从项目预编译。您可以使用 Exclude From 来做到这一点 项目 上下文菜单选项,或在 .csproj 文件中使用此代码:
    <ItemGroup>
        <Compile Remove="Views\Emails\templates\**" />
        <Content Remove="Views\Emails\templates\**" />
        <EmbeddedResource Remove="Views\Emails\templates\**" />
        <None Remove="Views\Emails\templates\**" />
    </ItemGroup>
    
    • 如果您现在发布项目,则会创建 .PrecompiledViews.dll,但 模板文件夹中没有视图。
    • 您可以手动(或使用自定义任务)复制 templates 文件夹以发布根目录。
    • 现在可以在此外部文件夹中找到视图,但您可能会遇到错误:

    找不到包的编译库位置 'Microsoft.Win32.Registry'

    要更正此问题,您必须发布文件夹添加 refs 带有一些运行时程序集的子文件夹。如果您在 MvcRazorCompileOnPublish 设置为 false 的情况下发布项目,则通常会创建此 refs 文件夹。所以你必须有一次在没有预编译的情况下发布到另一个文件夹并从那里复制这个 refs 子文件夹。

    【讨论】:

    • 哦,谢谢伙计。我会在几天内试一试。需要先完成其他事情(你知道它是如何工作的:)
    【解决方案2】:

    您是否尝试将其添加到您的 .csproj 文件中?

    <ItemGroup>
      <Content Update="Views\DoNotPublishThisFolder\**">
        <CopyToOutputDirectory>Never</CopyToOutputDirectory>
      </Content>
    
      <Content Update="some-file-to-not-publish.xxx">
        <CopyToOutputDirectory>Never</CopyToOutputDirectory>
      </Content>
    </ItemGroup>
    

    否则,您可以通过 Visual Studio GUI 选择文件夹或文件,方法是右键单击并选择属性并选择“请勿复制”

    【讨论】:

    • @TonyBasallo -- 我刚刚在答案中添加了更多细节
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多