我在VS 2017中创建了一个ASP.NET Core 2.0项目。当我发布项目时,p.Add("@tblXmlData", xmlfromLinq.ToString());
文件夹不存在,但Views
文件夹不存在。
我可以在我的.csproj文件中设置以下内容:
wwwroot
但没有工作。
答案 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包的引用,您无需显式引用它。
默认情况下,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在文件后面没有代码(长话短说)。
更多建议?