问题描述
我在 .NET 5.0 中创建了一个 Razor 类库项目,如下所示
这样,无论何时安装此软件包,都将使用相同名称复制整个文件夹及其目标中的所有文件。
如何通过 Areas
命令打包整个 dotnet pack
文件夹?
解决方法
试试这个:
1) 在项目文件夹的 <packages_id>.props
文件夹下创建一个 build
文件。在你这边,它应该被命名为 RazorClassLibrary1.props
以便文件可以工作。见this link。
并且如果您的 nuget 包名为 RazorClassLibrary1.1.0.0.nupkg
,则文件应为 RazorClassLibrary1.props
并保持名称与包 ID 相同。
2) 在 RazorClassLibrary1.props
下添加这些:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyFiles" BeforeTargets="Build">
<ItemGroup>
<File Include="$(MSBuildThisFileDirectory)..\Areas\**\*.*"></File>
</ItemGroup>
<Exec Command="xcopy /I/e/d/s/y %(File.Identity) $(ProjectDir)Areas\"></Exec>
</Target>
</Project>
3) 在 RazorClassLibrary1.csproj
文件中添加这些:
<ItemGroup>
<None Include="Areas\**\*.*" Pack="true" PackagePath="Areas"></None>
<None Include="build\RazorClassLibrary1.props" Pack="true" PackagePath="build"></None>
</ItemGroup>
另外,当您安装这个新版本的nuget包时,请clean your nuget caches或删除C:\Users\xxx(current user)\.nuget\packages
下的所有文件。
此外,这里是a similar issue。