Ton*_*ich 25 asp.net-core visual-studio-2019 asp.net-core-3.0
当我发布一个 ASP.NET Core 3.0 项目时,我得到了一些本地化的文件夹,其中显示的 4 个程序集位于每个文件夹中。我不确定为什么包含这些文件夹和文件。我的包都没有引用CodeAnalysis包。
我添加<PreserveCompilationContext>false</PreserveCompilationContext>了 csproj 文件,但没有帮助。有没有办法排除它们?
nhu*_*uvy 15
CodeAnalysis.dll如果您有对 的项目引用Microsoft.VisualStudio.Web.CodeGeneration.Design,您会在发布的输出中获得许多包含文件的语言文件夹,这是脚手架控制器所需要的。如果您的项目确实如此,请将.csproj文件中的包引用更改为包含ExcludeAssets="all"
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" ExcludeAssets="All" />
Run Code Online (Sandbox Code Playgroud)
例如,旧*.csproj文件
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UserSecretsId>aspnet-foo-4E53EF45-B3BE-4943-81BE-2449DC5AA2BC</UserSecretsId>
<BlazorLinkOnBuild>false</BlazorLinkOnBuild>
</PropertyGroup>
<ItemGroup>
<!-- ... -->
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design"
Version="3.0.0" />
</ItemGroup>
<ItemGroup>
<!-- ... -->
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
新文件*.csproj应该是
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UserSecretsId>aspnet-foo-4E53EF45-B3BE-4943-81BE-2449DC5AA2BC</UserSecretsId>
<BlazorLinkOnBuild>false</BlazorLinkOnBuild>
</PropertyGroup>
<ItemGroup>
<!-- ... -->
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design"
Version="3.0.0"
ExcludeAssets="All" />
</ItemGroup>
<ItemGroup>
<!-- ... -->
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
Lea*_*dro 14
添加这个:
<SatelliteResourceLanguages>es</SatelliteResourceLanguages>
Run Code Online (Sandbox Code Playgroud)
到 .csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<SatelliteResourceLanguages>es</SatelliteResourceLanguages>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
并考虑到您想要的语言,如英语和西班牙语:
<SatelliteResourceLanguages>en;es</SatelliteResourceLanguages>
Run Code Online (Sandbox Code Playgroud)
小智 11
就我而言,这些本地化文件夹的来源来自 Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 包。它依赖于 Microsoft.CodeAnalysis.Razor。您可以在此处阅读有关该包用途的更多信息:https : //docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.1
在尝试利用包时,您不能仅仅排除资产。我的解决方法是在项目处于调试模式时有条件地包含包引用。

<ItemGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.1" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
然后,我使用 #if 预处理器指令有条件地运行启用 razor 运行时编译的代码。

#if DEBUG
services.AddRazorPages().AddRazorRuntimeCompilation();
#else
services.AddRazorPages();
#endif
Run Code Online (Sandbox Code Playgroud)
请注意:您可能需要删除 bin 文件夹才能看到构建后删除的文件夹。此外,请确保您在正确的解决方案配置下进行构建。
我能够找到一个描述这个确切场景的 Github 问题,但不幸的是它从未得到解决。https://github.com/dotnet/extensions/issues/2247
| 归档时间: |
|
| 查看次数: |
3524 次 |
| 最近记录: |