source

컴파일 시 Dll Culture 폴더 사용 안 함

factcode 2023. 5. 14. 11:09
반응형

컴파일 시 Dll Culture 폴더 사용 안 함

나는 2 dll을 사용하고 있습니다.Microsoft.Expression.Interactions.dll그리고.System.Windows.Interactivity.dll상위 응용프로그램이 컴파일될 때 많은 양의 문화 폴더를 만듭니다.

그리고 각각의 안에는 2 dll이 있습니다.Microsoft.Expression.Interactions.resources.dll그리고.System.Windows.Interactivity.resources.dll) 검색해봤는데 이 짜증나는 자동 생성 콘텐츠를 막는 방법과 관련된 것을 찾을 수가 없습니다.

같은 문제에 직면했습니다.제 프로젝트는 ASP를 사용합니다.NET Core 3.1

*.csproj에 이 줄을 추가합니다.

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

이 문제에 대한 두 가지 해결 방법이 있습니다.

  • 알았다.System.Windows.Interactivity.dll이 파일에 직접 참조를 추가합니다.
  • 다음 폴더에서 해당 폴더 제거:
    \Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries

관련 링크:
원해
릴리스 디렉터리에서 caliburn.micro에 의해 생성된 파일

저는 다른 솔루션을 사용합니다.Visual Studio에서 프로젝트에 대한 빌드 후 이벤트를 구성하여 중복 폴더를 제거할 수 있습니다.

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

이 솔루션은 sdk 폴더에서 폴더를 제거하는 것보다 침입성이 낮습니다.

에 대한 좋은 답을 찾았습니다.NET 코어 3

패키지 참조에 ExcludeAssets="All"을 추가하기만 하면 됩니다.

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

Microsoft 커뮤니티의 원래 게시물 링크입니다. https://forums.asp.net/post/6281458.aspx

저는 에 대한 제 프로젝트에서 같은 문제를 가지고 있었습니다.NET Core 3.1(NUGET 패키지 마이크로소프트 사용).Visual Studio.웹.코드 생성.설계.

먼저 프로젝트 디렉토리에서 'bin' 폴더를 삭제합니다.

그런 다음 패키지에 대해 '자산 제외' 옵션을 설정해야 합니다.

Visual Studio에서 다음 작업을 수행합니다.

여기에 이미지 설명 입력

또는 *.csproj 파일을 다음과 같이 직접 변경하는 방법도 있습니다.

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

저에게는 그것이 문제를 해결했습니다.

UPD: 두 번째 솔루션을 찾았습니다. 이것은 필요한 로케일 폴더를 선택할 수 있는 또 다른 방법입니다.그러나 이 방법으로 이동하면 다시 'bin' 폴더를 삭제하고 선택한 패키지의 'ExcludeAssets' 옵션을 기본값으로 설정합니다.

*.csproj 파일에 다음과 같이 'SatelliteResourceLanguages' 태그를 추가합니다.

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

제 프로젝트를 위해 저는 이제 기본 en-US 로케일과 추가 'ru' 로케일을 갖게 되었습니다.구분자 ';'가 있는 다른 로케일을 선택할 수 있습니다.

번째 솔루션은 https://github.com/dotnet/sdk/issues/774 에서 확인할 수 있습니다.

저는 같은 문제를 겪었지만(여기서 비슷한 답변) 다른 답변은 저에게 효과가 없었습니다. 그래서 대신 제가 한 일은 제 메인 "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> 

이렇게 하면 파일이 생성된 후 효과적으로 파일을 제거할 수 있습니다. 처음에 파일을 만들지 않는 것만큼 좋지는 않지만 저에게는 효과적입니다.

답변은 더 이상 관련이 없습니다.

시스템을 적용합니다.리소스.어셈블리 범위에서 다음과 같은 NeutralResourcesLanguageAttribute 특성:

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

(프로젝트의 속성 섹션에 있는 AssemblyInfo.cs 파일이 이에 적합합니다.)

후우, 저는 시스템을 사용한 제 빌드에서 그것들을 버릴 수 있었습니다.창문들.내 csproj를 수정하여 interactive.syslog:

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

VS 2019의 .net 4.6.1의 경우...솔루션에 NuGet 매니저를 사용하여 제거 옵션에서 종속성 제거를 클릭했습니다.그것은 저에게 효과가 있는 것처럼 보였습니다.

주어진 해결책 중 저에게 효과가 있는 것은 하나도 없었습니다.하지만 받아들여진 대답은 - 비록 평가가 나빴지만 - 저를 올바른 방향으로 이끌었습니다.

생성된 각 문화 폴더의 내용은 다음과 같습니다.

여기에 이미지 설명 입력

이것은 이러한 파일을 만든 Nuget 패키지가 자주 언급되는 것이 아니라는 결론을 내리게 합니다.Microsoft.VisualStudio.Web.CodeGeneration.Design패키지는 최근에 설치한 XUnit 및 Test 패키지 중 하나입니다.시행착오 끝에 저는 마침내 저를 위한 범인과 해결책을 찾았습니다.

추가했습니다.ExcludeAssets="All"에▁Microsoft.NET.Test.Sdk이렇게 .sigroj로 포장...

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

그리고 문화 폴더가 사라졌습니다

따라서 일반적인 문제를 해결하기 위해 제가 권장하는 사항은 다음과 같습니다.

  • 생성된 문화 폴더를 살펴봅니다.
  • 이러한 폴더의 파일 이름에서 생성을 담당할 수 있는 Nuget 패키지를 확인합니다.
  • 더하다ExcludeAssets="All"<PackageReference>svroj 파일에 있습니다.
  • 빌드할 때 문화 폴더가 사라질 때까지 더 많은 패키지 참조로 이 작업을 계속합니다.

고지 사항:
저는 아직 VS 2017 및 Core 2.2를 사용하고 있습니다. 이것이 SatelliteResourceLanguages가 포함된 일반 솔루션이 제게 적합하지 않은 이유일 수 있습니다.

다음은 csproj 파일에서 저의 끔찍한 해결 방법입니다.위성 자원 언어 솔루션이 작동했으면 좋겠습니다.제 프로젝트에는 많은 레퍼런스가 있는데, 지금은 어떤 것이 문제의 원인인지, 앞으로는 어떤 새로운 것이 문제의 원인인지 잘 모르겠습니다.그래서 이 강압적인 해결책은 다음과 같습니다.

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

솔루션 탐색기에서 속성이 변경된 항목을 클릭하고 속성 탭에서 로컬 복사를 거짓으로 변경합니다.

언급URL : https://stackoverflow.com/questions/20342061/disable-dll-culture-folders-on-compile

반응형