【问题标题】:Visual Studio 2010: why all the foreign language folders?Visual Studio 2010:为什么所有的外语文件夹?
【发布时间】:2016-10-25 15:56:15
【问题描述】:

在我的解决方案的 /bin/debug 文件夹中,我注意到许多看起来像是外语文件夹的名称,如“ar”、“bg”、“ca”、“ cs”、“da”……一直到“zh-Hant”。每个文件夹都有这 4 个 DLL 的副本:

  • System.ComponentModel.DataAnnotations.resources.dll
  • System.Windows.Controls.Data.Input.resources.dll
  • System.Windows.Controls.Data.resources.dll
  • System.Windows.Controls.resources.dll

我正在开发的 Silverlight 应用程序没有任何国际化支持,所以我无法弄清楚这些文件和文件夹是如何到达那里的。总而言之,它几乎是 13 MB 的文件。

更糟糕的是,当我删除它们时,它们会在我下次构建解决方案时重新生成。

有什么建议吗?

预计到达时间:

这是 Silverlight 项目引用的 DLL 列表:

  • ESRI.ArcGIS.Client
  • ESRI.ArcGIS.Client.Toolkit
  • mscorlib
  • 系统
  • System.Core
  • System.Net
  • System.Runtime.Serialization
  • System.ServiceModel
  • System.Windows
  • System.Windows.Browser
  • System.Windows.Controls
  • System.Windows.Controls.Layout.Toolkit
  • System.Windows.Controls.Navigation
  • System.Windows.Interactivity
  • System.Xml

【问题讨论】:

  • 我自己的一个 Silverlight 项目也有同样的情况。希望这个问题得到解答。

标签: silverlight visual-studio-2010


【解决方案1】:

我注意到一些引用的程序集倾向于使用本地化资源进行国际化,例如 Castle ActiveRecord。 我刚刚检查了我正在处理的一个项目(它使用 Castle ActiveRecord 和 ZedGraph - 两者都在单独的程序集中具有本地化资源),并且在构建之后,语言文件夹在我的 bin 文件夹中重新创建。

所以 imo,我相信您在项目中引用了具有本地化资源的类似程序集,可能是 Silverlight 程序集或 ArcGIS 程序集(从未使用过任何一种)。

【讨论】:

  • 这听起来像是最有可能的答案。稍后我会检查我的项目是否会发生这种情况以确认。
  • 这听起来很合理。现在,如果只有一种简单的方法可以删除所有文件夹。其中大约 30 个包含四个 DLL 的相同副本。其余的包含六个 DLL 的相同副本,原始的四个加上 S.W.C.navigation.resources.dll 和 S.W.Data.resources.dll。这是一种令人难以置信的低效存储方式。
【解决方案2】:

我也有同样的问题,我已经设法缩小范围。问题在于这两个引用:

  1. System.Windows.Control
  2. System.Windows.Control.Toolkit(Silverlight 工具包 5)

通过删除这两个引用,我设法删除了不必要的外语 DLL。

如果您无法删除这 2 个引用或任何其他引用,您可以从 silverlight 安装目录中删除外语 dll,例如。 C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Libraries\Client

【讨论】:

  • 感谢您修正我的答案。
  • 问题不在于我的文件夹...而是 system.windows.interactivity.resources... 我不使用它,但 clickOnce 安装程序向我询问,但我不能添加它....
【解决方案3】:

我只是在输出文件夹中处理“System.Windows.Interactivity.resources.dll”附属程序集。我可以通过从“\Program Files\Microsoft SDKs\Expression\Blend.NETFramework\v4.5\Libraries”中删除所有语言文件夹来解决这个问题。如 MSDN 论坛中的 here 所述。

【讨论】:

    【解决方案4】:

    我能够通过删除该行来阻止创建文件夹:

    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
    

    当我有包含交互 .dll 的不需要的文件夹时。

    【讨论】:

    • 但是如果您需要 system.windows.interactivity 怎么办?
    【解决方案5】:

    我可以在这里寻找解决此问题的方法,但我自己偶然发现了一个。我将这 2 个 dll 设置为复制本地 false:

    <Reference Include="System.Windows.Controls, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    <Reference Include="System.Windows.Controls.Navigation, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <Private>False</Private>
    </Reference>
    

    我想说@darkphoenix 是正确的,但只有当您希望在输出中包含那些国际化的 dll 时才会创建文件夹。找到您使用的 dll 并将它们设置为复制本地 false(在项目文件中命名为“私有”)。如果您仍然需要这些 dll 来运行您的应用程序,请考虑将它们的硬拷贝放在库文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      相关资源
      最近更新 更多