在编译时禁用Dll文化文件夹

Ale*_*eed 43 .net c# wpf culture

我正在使用2个dll(Microsoft.Expression.Interactions.dllSystem.Windows.Interactivity.dll),当编译父应用程序时,创建大量的文化文件夹:

每个内部都有2个dll(Microsoft.Expression.Interactions.resources.dllSystem.Windows.Interactivity.resources.dll).我已经google了,我找不到任何与如何阻止这个恼人的自动生成内容相关的内容.

al.*_*val 48

面临同样的问题。我的项目使用 ASP.NET Core 3.1

将此行添加到您的 *.csproj

<PropertyGroup>
   <SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • +1对我有用。[文档](https://learn.microsoft.com/en-us/dotnet/core/project-sdk/msbuild-props#satelliteresourcelanguages) 解释了它的工作原理。 (6认同)
  • 这对我有用。请解释一下您是如何偶然找到此信息的。非常感谢。 (4认同)

Woj*_*lik 20

此问题有两种解决方法:

  • 复制System.Windows.Interactivity.dll并直接向此文件添加引用
  • 删除这些文件夹:
    \Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries

相关链接:
原始解决方案
由Release目录中的caliburn.micro生成的文件

  • 不适用于构建服务器 - ( (3认同)

小智 12

我用其他解决方案.您可以在Vistual Studio中为项目配置Post-build事件,这将删除多余的文件夹:

rd /s /q "de", "en", "es", "fr", "it", "ja", "ko", "ru", "zh-Hans", "zh-Hant"
Run Code Online (Sandbox Code Playgroud)

此解决方案比从sdk文件夹中删除文件夹的侵入性小.

  • post build事件为visual studio提供了重建项目的倾向,即使它们没有改变. (2认同)

Jon*_*ves 10

我为 .NET Core 3 找到了一个很好的答案

只需将 ExcludeAssets="All" 添加到包引用中。

<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" ExcludeAssets="All" />
Run Code Online (Sandbox Code Playgroud)

这是微软社区原帖的链接:https : //forums.asp.net/post/6281458.aspx

  • 对我不起作用。我正在使用 .NET Core 3.0 和 .NET Core 3.1 (2认同)
  • 通过将行“&lt;SatelliteResourceLanguages&gt; en &lt;/SatelliteResourceLanguages&gt;”添加到 * .cproj 文件 /sf/answers/4245855841/ 解决了问题 (2认同)

Iva*_*nov 6

我在使用 nuget 包 Microsoft.VisualStudio.Web.CodeGeneration.Design 在 .NET Core 3.1 上的项目中遇到了同样的问题

首先从您的项目目录中删除文件夹“bin”。

然后您需要为包设置选项“ExcludeAssets”。

在 Visual Studio 中:

在此处输入图片说明

或者另一种方法是直接更改 *.csproj 文件,如下所示:

...
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1">
    <ExcludeAssets>All</ExcludeAssets>
</PackageReference>
...
Run Code Online (Sandbox Code Playgroud)

对我来说它解决了这个问题。

UPD: 我找到了第二个解决方案 - 这是另一种让您选择所需语言环境文件夹的方法。但是如果你这样做 - 再次删除'bin'文件夹并将所选包的'ExcludeAssets'选项设置为默认值 - 空。

在 *.csproj 文件中添加标签 'SatelliteResourceLanguages' 像这样

...
<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <SatelliteResourceLanguages>ru;en-US</SatelliteResourceLanguages>
</PropertyGroup>
...
Run Code Online (Sandbox Code Playgroud)

对于我的项目,我现在有默认的 en-US 语言环境和附加的“ru”语言环境。您可以使用分隔符 ';' 选择其他语言环境 它们之间。

在这里找到的第二个解决方案https://github.com/dotnet/sdk/issues/774