Wie kann verhindert werden, dass die lokalisierten Microsoft.CodeAnalysis. *. Resources.dll-Dateien von ASP.NET Core veröffentlicht werden?

8

Wenn ich ein ASP.NET Core 3.0-Projekt veröffentliche, erhalte ich einige lokalisierte Ordner, in denen sich die 4 angezeigten Assemblys in jedem dieser Ordner befinden. Ich bin nicht sicher, warum diese Ordner und Dateien enthalten sind. Keines meiner Pakete verweist auf ein CodeAnalysisPaket.

Ich habe <PreserveCompilationContext>false</PreserveCompilationContext>in der csproj-Datei hinzugefügt, aber es hat nicht geholfen. Gibt es eine Möglichkeit, sie auszuschließen?

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Tony_Henrich
quelle
Hey, vielleicht kann dir das helfen stackoverflow.com/a/58298619/9358386
Kinjal Parmar

Antworten:

4

Sie erhalten viele Sprachordner mit CodeAnalysis.dllDateien in Ihrer veröffentlichten Ausgabe, wenn Sie einen Projektverweis auf haben Microsoft.VisualStudio.Web.CodeGeneration.Design, der für Gerüststeuerungen benötigt wird. Wenn dies für Ihr Projekt zutrifft, ändern Sie die Paketreferenz in Ihre .csprojDatei, um sie einzuschließenExcludeAssets="all"

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" ExcludeAssets="All" />

Zum Beispiel alte *.csprojDatei

<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>

Neue Datei *.csprojsollte sein

<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>
Mach Nhu Vy
quelle
4
Hallo, meine Anwendung verwendet asp net core 3 und ich habe * .csproj ExcludeAssets = "All" hinzugefügt, aber das hat nicht funktioniert. Irgendwelche anderen Ideen?)
al.koval
@ al.koval bereinigen und erstellen oder bin Ordner mit Ihrer Version löschen, erneut erstellen.
Andrej Lucansky
2
Ich habe das gleiche Problem. Ich habe sogar versucht, die Microsoft.VisualStudio.Web.CodeGeneration.Design-Referenz vollständig zu löschen. Ich habe diesen Wurf immer noch im Bereitstellungsordner. Bin Ordner löschen exct. hilft nicht. Hast du eine andere Idee?
Ali Erdoğan
4

In meinem Fall stammte die Quelle dieser lokalisierten Ordner aus dem Paket Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Es hat eine Abhängigkeit von Microsoft.CodeAnalysis.Razor. Weitere Informationen zum Zweck des Pakets finden Sie hier: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.1

Sie können ein Asset nicht einfach ausschließen, wenn Sie versuchen, das Paket zu nutzen. Meine Problemumgehung bestand darin, die Paketreferenz immer dann bedingt einzuschließen, wenn sich das Projekt im Debug-Modus befindet. bedingte Paketreferenz

Ich habe dann eine # if-Präprozessor-Direktive verwendet, um den Code, der die Kompilierung der Rasiermesser-Laufzeit ermöglicht, bedingt auszuführen. Razor-Laufzeitkompilierung der Vorprozessor-Direktive

Bitte beachten Sie: Möglicherweise müssen Sie Ihren bin-Ordner löschen, damit die Ordner nach einem Build entfernt werden. Stellen Sie außerdem sicher, dass Sie unter der richtigen Lösungskonfiguration erstellen.

Ich konnte ein Github-Problem finden, das genau dieses Szenario beschreibt, aber leider wurde es nie behoben. https://github.com/dotnet/extensions/issues/2247

Känguru
quelle