Visual Studio 2010:为什么所有的外语文件夹?

时间:2010-10-13 17:33:02

标签: silverlight visual-studio-2010

在我的解决方案的 / 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的文件。

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

有什么建议吗?

ETA:

以下是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

5 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

我有完全相同的问题,我已设法缩小范围。问题在于这两个参考:

  1. System.Windows.Control
  2. System.Windows.Control.Toolkit(Silverlight Toolkit 5)
  3. 通过删除这两个引用,我设法删除了不必要的外语DLL。

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

答案 2 :(得分:2)

我可以通过删除行来阻止创建文件夹:

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我可以在这里寻找这个问题的解决方案,但我自己偶然发现了一个。我将这两个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(在项目文件中命名为“private”)。如果您仍然需要这些dll来运行您的应用程序,请考虑在库文件夹中获取它们的硬拷贝。