我写了一个原型 RCL,它包含以下结构:
现在我想实现这个逻辑来覆盖另一个 web 应用程序中的本地文件,使用上面的这个目录结构作为一个框架,它覆盖文件。
为此,我编写了以下 .props 文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyFiles" BeforeTargets="Build">
<ItemGroup>
<File Include="$(MSBuildThisFileDirectory)..\Areas\**\*.*"></File>
<File Include="$(MSBuildThisFileDirectory)..\Areas\**\**\*.*"></File>
</ItemGroup>
<Exec Command="xcopy /I/e/d/s/y %(File.Identity) $(ProjectDir)Pages\Shared"></Exec>
</Target>
</Project>
.csproj 附加了这个:
<ItemGroup>
<None Include="Areas\**\*.*" Pack="true" PackagePath="Areas"></None>
<None Include="Areas\**\**\*.*" Pack="true" PackagePath="Areas"></None>
<None Include="build\libnamehere.props" Pack="true" PackagePath="build"></None>
</ItemGroup>
但这似乎只复制了 .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 库或类似的东西,但我还没有尝试导出它,我需要一些指导对此也是如此,因为微软的文档也缺乏这方面的内容。