在我的解决方案的 / bin / debug 文件夹中,我注意到了大量似乎是外语文件夹的名称,如“ar”,“bg”,“ca”,“ cs“,”da“...一直到”zh-Hant“。每个文件夹都有这4个DLL的副本:
我正在开发的Silverlight应用程序没有任何国际化支持,所以我无法弄清楚这些文件和文件夹是如何实现的。总而言之,它几乎是13 MB的文件。
更糟糕的是,当我删除它们时,它们会在下次构建解决方案时重新生成。
有什么建议吗?
ETA:
以下是Silverlight项目引用的DLL列表:
答案 0 :(得分:5)
我注意到一些引用的程序集倾向于使用本地化资源进行国际化,例如Castle ActiveRecord。
我刚刚查看了我正在处理的项目(使用Castle ActiveRecord和ZedGraph - 两者都在不同的程序集中都有本地化资源),并且在构建之后,语言文件夹在我的bin
文件夹中重新创建。
所以imo,我相信您在项目中引用了具有本地化资源的类似程序集,可能是Silverlight程序集或ArcGIS程序集(从未使用过)。
答案 1 :(得分: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来运行您的应用程序,请考虑在库文件夹中获取它们的硬拷贝。