我正在使用2个dll(Microsoft.Expression.Interactions.dll
和System.Windows.Interactivity.dll
),在编译父应用程序时,会创建大量的文化文件夹:
每个内部都有2个dll(Microsoft.Expression.Interactions.resources.dll
和System.Windows.Interactivity.resources.dll
)。我已经google了一下,我找不到任何与如何阻止这个恼人的自动生成内容相关的内容。
答案 0 :(得分:27)
遇到同样的问题。我的项目使用ASP.NET Core 3.1
将此行添加到您的* .csproj
<PropertyGroup>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
答案 1 :(得分:20)
此问题有两种解决方法:
System.Windows.Interactivity.dll
并直接向此文件添加引用\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.5\Libraries
相关链接:
Original solution
Generated files by caliburn.micro in Release directory
答案 2 :(得分:11)
我使用其他解决方案。您可以在Vistual Studio中为项目配置Post-build事件,这将删除多余的文件夹:
rd /s /q "de", "en", "es", "fr", "it", "ja", "ko", "ru", "zh-Hans", "zh-Hant"
此解决方案比从sdk文件夹中删除文件夹的侵入性小。
答案 3 :(得分:5)
在使用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>
...
对我来说,它解决了这个问题。
UPD: 我找到了第二个解决方案-这是让您选择所需的区域设置文件夹的另一种方法。但是,如果您采用这种方式-再次删除'bin'文件夹,并将所选软件包的'ExcludeAssets'选项设置为默认值-空。
在* .csproj文件中,像这样添加标签“ SatelliteResourceLanguages”
...
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<SatelliteResourceLanguages>ru;en-US</SatelliteResourceLanguages>
</PropertyGroup>
...
对于我的项目,我现在具有默认的美国语言环境和其他“ ru”语言环境。您可以使用分隔符';'选择其他语言环境。他们之间。
此处找到第二种解决方案https://github.com/dotnet/sdk/issues/774
答案 4 :(得分:1)
Fwiw,我能够通过修改我的csproj从我的构建中转储它们使用system.windows.interactivity.dll:
<?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>
答案 5 :(得分:1)
在程序集范围应用 System.Resources.NeutralResourcesLanguageAttribute 属性,如下所示:
[assembly: System.Resources.NeutralResourcesLanguageAttribute("en")]
(这个的好地方是项目属性部分的AssemblyInfo.cs文件)
答案 6 :(得分:1)
我遇到了同样的问题(此处为similar answer),但其他答案都对我无济于事,所以我所做的是在主“ 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>
这将在文件生成后有效地删除它们,虽然不如首先创建它们,但它对我有用。
答案 7 :(得分:0)
我为.NET Core 3找到了一个很好的答案
只需将ExcludeAssets =“ All”添加到程序包引用中即可。
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.0.0" ExcludeAssets="All" />
这是Microsoft社区上原始帖子的链接: https://forums.asp.net/post/6281458.aspx
答案 8 :(得分:0)
对于VS 2019中的.net 4.6.1 ... 使用NuGet管理器作为解决方案,我只是单击了“卸载选项”下的“删除依赖项”。这似乎对我有用。
答案 9 :(得分:-1)
只需在解决方案资源管理器中单击更改属性的项目,然后在“属性”选项卡中将“本地复制”更改为False。
答案 10 :(得分:-1)
所有给定的解决方案都不适合我。 但是接受的答案 - 尽管评分很低 - 确实让我走上了正确的轨道。
我生成的每个文化文件夹的内容如下所示:
这使我得出结论,创建这些文件的 Nuget 包不是经常提到的 Microsoft.VisualStudio.Web.CodeGeneration.Design
包,而是我最近安装的 XUnit 和 Test 包之一。通过反复试验,我终于找到了罪魁祸首和适合我的解决方案:
我像这样将 ExcludeAssets="All"
添加到 .csproj 中的 Microsoft.NET.Test.Sdk
包中...
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" ExcludeAssets="All" />
...文化文件夹消失了。
所以我对解决一般问题的建议是:
ExcludeAssets="All"
添加到 .csproj 文件中的相应 <PackageReference>
。免责声明:
我仍在使用 VS 2017 和 Core 2.2,这可能是使用 SatelliteResourceLanguages 的通用解决方案对我不起作用的原因。