问题标签 [razor-class-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
181 浏览

asp.net-core - _ViewImports.cshtml 文件的 NETSDK1152 错误

将我的 WebApp 从 NET5 升级到 NET6 后,尝试将我的 WebApp 推送到 Azure AppService 时,出现 NETSDK1152 错误:

找到多个具有相同相对路径的发布输出文件:C:...\src\ProjA_ViewImports.cshtml、C:...\src\ProjB_ViewImports.cshtml、C:...\src\ProjC_ViewImports.cshtml

问题中的项目是 Razor 类库 (Project Sdk="Microsoft.NET.Sdk.Razor"),它们都被常规 Web 应用程序 () 引用。有问题的文件是 _ViewImport.cshtml 文件,其中包含我的视图的常见使用/导入。它们只有我从未更改过的标准属性(操作 -> 内容,复制到输出目录 -> 不复制)。

在更新到 NET6 之前,无论是在我的本地计算机上还是在 Azure 上(发布和运行应用程序),一切都完美无缺。升级到 .NET6 后,我开始收到上述错误。

但是,这只发生在我使用发布功能时(或者当 CI/CD 被推送到远程 git repo 时)。如果我在本地使用 dotnet publish,一切似乎都可以正常发布。

尝试通常的建议,关闭错误(如建议的,例如,here),并没有为我解决任何问题。

除了完全摆脱 _ViewImport.cshtml 文件或重组项目之外,我不知道如何在保持结构不变的同时潜在地解决这个问题。

0 投票
1 回答
207 浏览

c# - 如何从从 NuGet 包获得的 RCL 导入 Razor 页面?

RCL 代表 Razor 类库。

我使用共享文件 _Layout.cshtml 制作了自己的原型 RCL,我想将它包含在我的项目中。我已经从 NuGet 安装了 RCL,希望它能自动工作,但显然不能。

我删除了我的 _Layout.cshtml,希望它会从我制作的 RCL 中获取,但显然这不会像那样工作。我收到以下错误:

  • 如何正确将此 RCL 导入我的新 Web 应用程序?

更新

我添加@using libnamehere到我的 _ViewImports.cshtml 文件中并注释掉了其中唯一的代码行,_ViewStart.cshtml但现在我收到以下错误:

0 投票
0 回答
156 浏览

c# - 如何在 ASP.NET Core 中将框架/样板 NuGet 包正确集成到 Web 应用程序中?

我写了一个原型 RCL,它包含以下结构:

目录结构

现在我想实现这个逻辑来覆盖另一个 web 应用程序中的本地文件,使用上面的这个目录结构作为一个框架,它覆盖文件。

为此,我编写了以下 .props 文件:

.csproj 附加了这个:

但这似乎只复制了 .cshtml.cs 文件,这还不够好......

  • 我如何也复制 .cshtml 文件?

  • 有没有更好的方法来使用 RCL 中的 _Layout.cshtml?

如果这很重要,我正在使用 ASP.NET Core 6 (.NET 6)。

总而言之,我想将我的一个 ASP.NET Core 应用程序作为一个框架,因此所有资产(Razor 页面、JS 文件、C# 逻辑、控制器等)都应该打包在一个框架中(正如你所看到的,它已经部分完成了我的原型),可以简单地引用它,它会在发生冲突时覆盖新的 Web 应用程序的页面。此外,框架 NuGet 包的更新不应破坏新的 Web 应用程序。

附言

我刚刚解压了我的 NuGet 包,发现里面没有 .cshtml 文件,只有 .cshtml.cs 文件。为什么???

更新 1

由于请求,我正在重新描述问题。我制作了一个常规的 ASP.NET Core Web 应用程序,我想将 90% 的代码库用作我的其他新项目的样板/框架,因为每个项目的代码都是相同的。为了实现这一点,我.cshtml主要为页面创建了一个 RCL,但似乎 NuGet打包.cshtml文件。为了使其“动态”,我使用来自appsettings.json. 我还需要在我的新项目中包含 C# 逻辑(Program.cs、Startup.cs 等),因此我创建了一个 .NET Core 库或类似的东西,但我还没有尝试导出它,我需要一些指导对此也是如此,因为微软的文档也缺乏这方面的内容。

0 投票
0 回答
29 浏览

blazor - 带有 JS 的 Blazor RCL。-“小部件”未定义

我有一个带有 js 文件的 Razor 类库 [My.Widget]:

小部件.js

在我的 WebAssembly 中,我已经加载了 js 文件:

索引.html

我可以在浏览器开发工具中看到它正确加载。

RCL 有一个互操作文件

我在上面的互操作类中成功调用了 Show 方法,我可以看到 js 已加载到开发工具中,但出现异常:

Microsoft.JSInterop.JSException:找不到“Widget.show”(“Widget”未定义)。

有任何想法吗?

0 投票
1 回答
70 浏览

c# - 控制台应用程序中的 RazorViewEngine 找不到视图

我有以下

  • dotnet core 6 控制台应用程序
  • dotnet core 6 Razor 类库(带有 .cshtml)

我正在做一个在 web api 中工作得很好的 View Engine RenderAsync()。在控制台应用程序中运行时找不到模板,模板在 dll 中。

在此处输入图像描述

第一个问题,该cshtml的相对/绝对路径是什么?我正在使用:@"Templates/Pdf/LevelsEmail.cshtml"

控制台应用启动

在 RCL csproj

尝试 GetView 或 FindView

搜索 ViewEngineResult

然后渲染(这只是一个例子,问题在于获取视图)

第二个问题:这可以在控制台应用程序(而不是网络应用程序)中使用 RazorViewEngine 吗?

0 投票
1 回答
21 浏览

asp.net-core - 如何禁用覆盖 Razor 类库视图

我现在正在使用 ASP.Net Core 编写一个 Web 应用程序和相关的 Razor 类库。我知道 Razor 类库中定义的视图 (*.cshtml) 可以在 Web 应用程序中被覆盖。它为开发人员带来了足够的灵活性。但我觉得有时 RCL 的开发人员并不期望 RCL 中定义的视图会被覆盖。

有没有办法禁用覆盖视图(所有或某些特定视图)?

谢谢!