2

我写了一个原型 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 库或类似的东西,但我还没有尝试导出它,我需要一些指导对此也是如此,因为微软的文档也缺乏这方面的内容。

4

0 回答 0