这里是场景 - 我使用此代码https://iamrufio.com/2017/09/08/rendering-emails-with-razorviewengine-in-net-core-2-0/(感谢作者)将视图呈现给字符串(对于电子邮件)。但是当您发布项目时,所有视图都会被编译,因此我放弃了我的Views / Emails / [templates]。如何在发布时排除某些文件夹被编译(而不是部署)?
我发现了这个https://github.com/aspnet/MvcPrecompilation并使用了MvcRazorExcludeViewFilesFromPublish set to false
并且它有效。但是现在我已经部署了所有的视图(他们还在预编译,我想知道吗?)。没什么大不了的,但我只部署了一部分。
答案 0 :(得分:2)
你可以尝试这个,它适合我。
<ItemGroup> <Compile Remove="Views\Emails\templates\**" /> <Content Remove="Views\Emails\templates\**" /> <EmbeddedResource Remove="Views\Emails\templates\**" /> <None Remove="Views\Emails\templates\**" /> </ItemGroup>
无法找到包的编译库位置 &#39; Microsoft.Win32.Registry&#39;
要更正此问题,您必须发布文件夹添加参考 带有一些运行时程序集的子文件夹。如果您确实发布了 MvcRazorCompileOnPublish 设置为 false 的项目,则会正常创建 refs 文件夹。所以你必须有一次在没有预编译的情况下发布到另一个文件夹并从那里复制这个refs子文件夹。
答案 1 :(得分:0)
您是否尝试在.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选择文件夹或文件,方法是右键单击并选择属性,然后选择&#34;不要复制&#34;