Dll-cultuurmappen uitschakelen bij compileren

Ik gebruik 2 dll’s (Microsoft.Expression.Interactions.dllen System.Windows.Interactivity.dll) die, wanneer de bovenliggende toepassing wordt gecompileerd, heel veel cultuurmappen:

En binnen elk zijn 2 dll’s (Microsoft.Expression.Interactions.resources.dllen System.Windows.Interactivity.resources.dll). Ik heb gegoogeld en kan niets vinden over hoe ik deze irritante automatisch gegenereerde inhoud kan stoppen.


Antwoord 1, autoriteit 100%

Heb hetzelfde probleem ondervonden. Mijn project gebruikt ASP.NET Core 3.1

Voeg deze regel toe aan uw *.csproj

<PropertyGroup>
   <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>

Antwoord 2, autoriteit 39%

Er zijn twee oplossingen voor dit probleem:

  • kopieer System.Windows.Interactivity.dllen voeg direct een verwijzing naar dit bestand toe
  • verwijder die mappen uit:
    \Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries

Verwante links:
Originele oplossing
Bestanden gegenereerd door caliburn.micro in de release-directory


Antwoord 3, autoriteit 36%

Ik gebruik een andere oplossing. U kunt Post-build-gebeurtenis voor uw project configureren in Vistual Studio, waardoor overbodige mappen worden verwijderd:

rd /s /q "de", "en", "es", "fr", "it", "ja", "ko", "ru", "zh-Hans", "zh-Hant"

Deze oplossing is minder ingrijpend dan het verwijderen van mappen uit de sdk-map.


Antwoord 4, autoriteit 18%

Ik heb een goed antwoord gevonden voor .NET Core 3

Voeg ExcludeAssets=”All” toe aan de pakketreferentie.

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

Dit is de link voor het originele bericht op de Microsoft Community:
https://forums.asp.net/post/6281458.aspx


Antwoord 5, autoriteit 11%

Ik had hetzelfde probleem in mijn project op .NET Core 3.1 met het nuget-pakket Microsoft.VisualStudio.Web.CodeGeneration.Design

Allereerst VERWIJDER de map ‘bin’ uit uw projectdirectory.

Vervolgens moet u de optie ‘ExcludeAssets’ voor het pakket instellen.

In Visual Studio hier:

voer hier de afbeeldingsbeschrijving in

Of een andere manier is directe wijziging in het *.csproj-bestand als volgt:

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

Voor mij loste het het probleem op.

UPD:
Ik vond een tweede oplossing – het is een andere manier waarmee je kunt kiezen welke locale mappen je nodig hebt. Maar als je deze kant op gaat – verwijder opnieuw de map ‘bin’ en stel de optie ‘ExcludeAssets’ van het gekozen pakket in op de standaardwaarde – leeg.

Voeg in het *.csproj-bestand de tag ‘SatelliteResourceLanguages’ op deze manier toe

...
<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <SatelliteResourceLanguages>ru;en-US</SatelliteResourceLanguages>
</PropertyGroup>
...

Voor mijn project heb ik nu de standaard en-US locale en extra ‘ru’ locale. U kunt een andere landinstelling selecteren met devider ‘;’ tussen hen.

2e oplossing hier gevonden https://github.com/dotnet/sdk/issues/774


Antwoord 6, autoriteit 7%

Ik had hetzelfde probleem (vergelijkbaar antwoordhier) maar geen van de andere antwoorden werkte voor mij, dus in plaats daarvan voegde ik de volgende regels toe aan het einde van mijn hoofd “csproj”:

<ItemGroup>
    <FluentValidationExcludedCultures Include="be;cs;cs-CZ;da;de;es;fa;fi;fr;ja;it;ko;mk;nl;pl;pt;ru;sv;tr;uk;zh-CN;zh-CHS;zh-CHT">
        <InProject>false</InProject>
    </FluentValidationExcludedCultures> 
</ItemGroup>
<Target Name="RemoveTranslationsAfterBuild" AfterTargets="AfterBuild">
    <RemoveDir Directories="@(FluentValidationExcludedCultures->'$(OutputPath)%(Filename)')" />    
</Target> 

Dit zal de bestanden effectief verwijderen nadat ze zijn gegenereerd, niet zo goed als ze in de eerste plaats niet te maken, maar het werkt voor mij.


Antwoord 7, autoriteit 5%

Pas het kenmerk System.Resources.NeutralResourcesLanguageAttributetoe op de assembly-scope, zoals:

[assembly: System.Resources.NeutralResourcesLanguageAttribute("en")]

(Een goede plaats hiervoor is het bestand AssemblyInfo.cs in het eigenschappengedeelte van het project)


Antwoord 8, autoriteit 2%

Fwiw, ik kon ze dumpen uit mijn build die system.windows.interactivity.dll gebruikte door mijn csproj aan te passen:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(   **<CHOPPED**>... />
  <PropertyGroup>
 <!--added this line for system.windows.interactivity.dll to dump the localized dll's-->
    <SupportedCultures>en-US</SupportedCultures>

Antwoord 9

Voor .net 4.6.1 in VS 2019 …
Met behulp van NuGet Manager voor oplossing, heb ik zojuist op Afhankelijkheden verwijderen geklikt onder Opties voor verwijderen. Dat leek voor mij te werken.


Antwoord 10

Hier is mijn afschuwelijke oplossing in het csproj-bestand. Ik wou dat de SatelliteResourceLanguages-oplossing werkte. Mijn projecten hebben veel referenties en ik weet niet zeker welke nu het probleem veroorzaakt, en ik weet ook niet welke nieuwe het probleem in de toekomst zullen veroorzaken. Dus deze hardhandige oplossing:

<PostBuildEvent>
        rd /s /q "$(TargetDir)de\" 2&gt;nul
        rd /s /q "$(TargetDir)cs\" 2&gt;nul
        rd /s /q "$(TargetDir)es\" 2&gt;nul
        rd /s /q "$(TargetDir)fr\" 2&gt;nul
        rd /s /q "$(TargetDir)it\" 2&gt;nul
        rd /s /q "$(TargetDir)ja\" 2&gt;nul
        rd /s /q "$(TargetDir)ko\" 2&gt;nul
        rd /s /q "$(TargetDir)pl\"&gt;2&gt;nul
        rd /s /q "$(TargetDir)pt-BR\" 2&gt;nul
        rd /s /q "$(TargetDir)ru\" 2&gt;nul
        rd /s /q "$(TargetDir)tr\" 2&gt;nul
        rd /s /q "$(TargetDir)zh-Hans\" 2&gt;nul
        rd /s /q "$(TargetDir)zh-Hant\" 2&gt;nul
    </PostBuildEvent>

Antwoord 11

Klik in Solution Explorer op Items die de eigenschappen hebben gewijzigd en op het tabblad Eigenschappen Wijzig Kopie lokaal naar False.


Antwoord 12

Geen van de gegeven oplossingen werkte voor mij.
Maar het geaccepteerde antwoord – hoewel slecht beoordeeld – zette me wel op het goede spoor.

De inhoud van elk van mijn gegenereerde cultuurmappen zag er als volgt uit:

voer hier de afbeeldingsbeschrijving in

Hieruit kwam ik tot de conclusie dat het Nuget-pakket dat deze bestanden heeft gemaakt niethet vaak genoemde Microsoft.VisualStudio.Web.CodeGeneration.Design-pakket was, maar een van de XUnit- en testpakketten die ik onlangs had geïnstalleerd. Met vallen en opstaan ​​heb ik eindelijk de boosdoener en de oplossing voor mij gevonden:

Ik heb ExcludeAssets="All"toegevoegd aan het Microsoft.NET.Test.Sdk-pakket in .csproj zoals zo…

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" ExcludeAssets="All" />

…en de cultuurmappen zijn verdwenen.

Dus mijn aanbeveling om het algemene probleem op te lossen is:

  • Bekijk de gegenereerde cultuurmappen.
  • Probeer uit de namen van de bestanden in deze mappen te bepalen welke Nuget-pakketten mogelijk verantwoordelijk zijn voor het genereren.
  • Voeg ExcludeAssets="All"toe aan de corresponderende <PackageReference>in uw .csproj-bestand.
  • Blijf dit doen met meer PackageReferences totdat de cultuurmappen verdwijnen tijdens het bouwen.

Disclaimer:
Ik gebruik nog steeds VS 2017 en Core 2.2, wat misschien de reden is waarom de generieke oplossing met SatelliteResourceLanguages ​​niet voor mij werkte.

Other episodes