2010-02-04 59 views
22

我有Resources.resx,用于生成Resources.designer.cs。是否应该检入Resources.designer.cs,还是可以依赖Visual Studio在需要时生成它?Resources.Designer.cs应该受源代码控制吗?

+7

[Microsoft says](http://connect.microsoft.com/VisualStudio/feedback/details/285765/resources-designer-cs-doesnt-automatically-get-rebuilt-despite-it-being-an-auto-生成文件)“定制工具在设计时运行,而不是在构建时运行,因此需要将相关文件检入源代码管理。“ – 2014-02-07 04:20:28

回答

11

我的选择是:如果它是由构建系统修改,确保构建过程将创建它并没有在检查

对于像“设计师”自动生成的文件,我检查他们他们只当其他组件发生变化时(通过我)进行修改。它由VS生成,不会被构建系统修改。

1

我不是100%确定这个文件的构建方案。我认为可能Studio或更合适的msbuild会在您每次构建应用程序时重新生成文件,但不确定。

不管怎样,我还是会检查该文件中的一对夫妇的原因

  1. 它是在Visual Studio中大多数源代码控制的默认设置。他们认为这个问题比我有更多的困难,并可能有很好的理由这样做
  2. 调试:在Resource.Designer.cs中不太可能会有问题,但如果有的话你会被迫建立之前,你可以附加/调试
  3. 源代码管理应该是你的来源的历史。如果您无法看到与您的应用程序相关的所有来源,它有什么用呢?

第一个原因是最重要的

+0

关于第1点,可能是这种情况,但Xamarin团队自己在GitHub项目中忽略了它,所以我觉得最多只是这一论点的一方 – 2017-07-30 03:19:26

6

我在你的帖子跑了问题我遇到,不完全一样,但它帮我找到了一个临时解决方案。这是我发现可能会帮助你...

我正在创建一个简单的字符串资源文件。然后我使用一个修改后的CodeProject程序将其翻译成外语。 (一旦我们稳定代码,我们将使用专业服务)该实用程序不会创建designer.cs文件。做一个重建所有也没有重新创建文件。看来,只要您使用外部工具(而不是Visual Studio设计器)来修改resx文件,就会失去这些同步的更改。在我的情况下,设计器文件仅用于将字符串强制键入属性名称。如果您使用ID来拉动字符串(旧的方法),那么您根本不需要这些文件,因此不需要将它们检入到源代码控制中。但是,如果您使用强类型访问这些字符串(更现代的方法),您应该检查它们。

另一方面...我找到了一种方法来将这些designer.cs文件与它们的resx计数器重新同步因为那是我的问题......我需要它们。在解决方案资源管理器中选择resx文件并将CustomTool属性设置为PublicResXFileCodeGenerator立即创建了designer.cs文件。不幸的是,如果它已经设置,你必须取消设置,然后重新设置它来创建文件。 如果有人知道通过一些自动化手段强制重新创建这些方法...我真的很感激它。

谢谢。

+7

你好丹尼斯你可以手动运行ResX代码生成器通过右键单击resx-File并选择“运行自定义工具”。 – theDmi 2012-07-04 09:28:54