在netcore 2.0 visual studio 2017中发布项目时不会复制视图

时间:2017-10-11 09:54:23

标签: asp.net-core asp.net-core-mvc visual-studio-2017 asp.net-core-2.0

我在VS 2017中创建了一个ASP.NET Core 2.0项目。当我发布项目时,p.Add("@tblXmlData", xmlfromLinq.ToString()); 文件夹不存在,但Views文件夹不存在。

我可以在我的.csproj文件中设置以下内容:

wwwroot

但没有工作。

4 个答案:

答案 0 :(得分:16)

ASP.NET Core MVC具有precompilation功能,可以通过引用Microsoft.AspNetCore.Mvc.Razor.ViewCompilation包来添加。由MvcRazorCompileOnPublish属性配置的功能启用/禁用是.csproj。

默认情况下,该软件包是在ASP.NET Core 2.0 MVC应用程序中添加的:

  

如果您在netcoreapp2.0上定位ASP.NET Core 2.0或更高版本,Microsoft.AspNetCore.All会添加对Microsoft.AspNetCore.Mvc.Razor.ViewCompilation包的引用,您无需显式引用它。

precompilation is enabled

  

默认情况下,ASP.NET Core 2.x项目模板隐式将MvcRazorCompileOnPublish设置为true,这意味着可以从.csproj文件中安全地删除此节点:

<PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
  </PropertyGroup>

如果你去发布输出文件夹,你会看到<project_name>.PrecompiledViews.dll包含你的观点的dll。

答案 1 :(得分:12)

在.Net core 3.1中,我们需要在 .csproj

中添加以下代码
 <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
  </PropertyGroup>

答案 2 :(得分:0)

默认情况下,它可能会生成<project_name>.Views.dll。您需要在项目MvcRazorCompileOnPublish文件中设置false属性.csproj。默认情况下为true

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>    
</PropertyGroup>

答案 3 :(得分:0)

在3.1上,我尝试了所有上述操作,但没有出现.cshtml文件。有趣的是,我确实将.cs文件复制到发布文件夹中。即在我的csproj中,前两项工作-另一项没有

class Shop < ApplicationRecord
  has_many :bike_categories, dependent: :destroy
  has_many :bikes, through: :bike_categories
  has_many :reservations, dependent: :destroy
end

class Reservation < ApplicationRecord
  belongs_to :shop
  belongs_to :bike
end

class Bike < ApplicationRecord
  belongs_to :bike_category
  has_many :reservations, dependent: :destroy
end

class BikeCategory < ApplicationRecord
  belongs_to :shop
  has_many :bikes, dependent: :destroy
end

如果我手动复制文件,则可以通过进行动态重新编译来修改它们(如预期的那样)。注意:.cshtml在文件后面没有代码(长话短说)。

更多建议?