我试图在Blazor中拥有2个客户端项目和1个服务器项目。因此,我创建了一个新的Blazor WebAssembly应用程序,其中检查了https、asp.net Core托管和Progressive Web应用程序。
现在我有3个自动生成的项目,客户端、服务器和共享项目。
假设我需要另一个必须与同一服务器通信的客户端项目。
我添加了一个新的blazor项目,我选择了blazor WebAssembly应用程序,但这次我取消了ASP.NET Core Hosted and Progressive Web应用程序(我不需要这个应用程序离线工作(。
所以现在我有两个客户端,一个服务器,一个共享项目。
我要做的下一件事是将服务器中的引用添加到新的客户端项目中。
在出现此错误之前,一切似乎都很好:
Blazor静态资产-具有相同路径的冲突资产
我在github上发现了以下讨论:https://github.com/dotnet/aspnetcore/issues/20580
他们说你必须将<StaticWebAssetBasePath>clientA</StaticWebAssetBasePath> <StaticWebAssetBasePath>clientB</StaticWebAssetBasePath>
写入你的客户项目中。
当我点击错误时,visual studio会显示一个名为Microsoft.Net.Sdk.Razor.StaticWebAssets.targets的文件,并显示第191行,即:
<ValidateStaticWebAssetsUniquePaths
StaticWebAssets="@(_ReferencedStaticWebAssets)"
WebRootFiles="@(_WebRootFiles)" />
我认为我不必修改这个文件,那么我应该修改什么呢?
好吧,我可能已经找到了写标签的地方,我认为这对其他人会有帮助。我打开了我的两个客户的csproj,在PropertyGroup标签下我写道:
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RazorLangVersion>3.0</RazorLangVersion>
<StaticWebAssetBasePath>.clientA</StaticWebAssetBasePath>
</PropertyGroup>
对于我的客户B
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RazorLangVersion>3.0</RazorLangVersion>
<StaticWebAssetBasePath>.clientB</StaticWebAssetBasePath>
</PropertyGroup>
现在错误消失了。