当您构建Silverlight应用程序时,它总是将一大堆本地化资源dll输出到\bin\de\
\bin\es\
\bin\fr\
等(最终可以打包在.xap中)。这很棒,但我没有使用它们,它们不是应用程序运行所必需的,它们使我们的TFS构建服务器的根本混乱。
我意识到TFS 2K8存在一个小错误,它很容易修复,以确保这些文件不会被转储到构建服务器的根目录中,但我理想的是防止这些文件被生成。
我已经在阳光下尝试了一切来阻止创建这些文件。因为它们在构建时间之前实际上并不存在,所以我不能告诉它们不输出。
我发现了很多关于本地化/全球化的信息,这些文件是如何工作的以及很多方法来操纵它们,但没有任何关于阻止它们建立的信息。
有没有人知道我可以阻止它们出现在构建中的\ bin \中?是否有可以在构建选项中使用的开关或类似的东西?
编辑。我想要一种方法来防止这种情况发生。它可以通过构建后的事件来清理,但这远非理想。
答案 0 :(得分:5)
我在另一个StackOverflow主题中回答了这个问题:Language folders for Silverlight projects when building with Team Build
打开Windows资源管理器。转到C:\ Program Files \ Microsoft SDKs \ Silverlight \ v4.0 \ Libraries \ Client。 (如果您运行的是64位Windows,则为C:\ Program Files(x86)\ Microsoft SDKs \ Silverlight \ v4.0 \ Libraries \ Client \)。在该位置,您将看到一堆语言/文化文件夹。
每当您获得Silverlight SDK的更新时,您可能必须再次执行此操作。
答案 1 :(得分:2)
如果在构建项目后查看这些文件夹,则会在其中看到一堆dll和/或资源文件。您在文件夹中看到的dll / resources是导致文件夹本身生成的原因。由于您在项目中引用了这些dll,因此在构建项目时,引用会从SDK文件夹(或引用它们的任何位置)中获取这些文件。
因此,作为示例,如果您查看将安装在%ProgramFiles%\ MicrosoftSDKs \ Silverlight \ v3.0 \ Libraries \ Client文件夹中的System.Windows.Controls.dll。在该文件夹中,您将看到构建时生成的相同文件夹(de,fr,it等)。因此,为了防止这些生成,你可以做几件事。
1)将dll复制到单独的文件夹并引用该文件。我不得不从sdk文件夹中删除dll,以便在VS 2010中使用该引用,不确定该引用是否会在2008年修复。
2)从SDK本身重命名或删除全局文件夹和文件。这会影响所有项目,而不仅仅是您的单个项目,但它可能会为您解决问题。
祝你好运!答案 2 :(得分:1)
在Post-built事件中:
rmdir /Q /S $(TargetDir)de
rmdir /Q /S $(TargetDir)fr
rmdir /Q /S $(TargetDir)it
rmdir /Q /S $(TargetDir)ja
rmdir /Q /S $(TargetDir)ko
rmdir /Q /S $(TargetDir)zh-Hans
rmdir /Q /S $(TargetDir)zh-Hant
rmdir /Q /S $(TargetDir)es
答案 3 :(得分:0)
如何使用post build步骤来清理你不需要的东西? 要做到这一点: 右键单击项目 - >属性 - >建立活动 在后期构建中,您可以使用标准的Windows命令行命令。