【问题标题】:Renaming Controller classes in MonoTouch MonoDevelop在 MonoTouch MonoDevelop 中重命名控制器类
【发布时间】:2012-03-14 11:17:03
【问题描述】:

重命名继承 UIViewController 并具有链接到情节提要的 Designer.cs 类的类的最佳方法是什么?

我首先尝试在 MonoDevelop 中重命名 .cs 文件。这可行,但 Designer.cs 文件没有被重命名,类名也没有。

然后我重命名了类名。这成功地更改了 .cs 和 .designer.cs 文件中的类名,但仍然没有更改 .designer.cs 文件名。它也没有更改 Xcode 中控制器的“自定义类”的名称。

所以在 XCode 中我更改了自定义类的名称并保存然后切换回 MonoDevelop ,令我恐惧的是,它创建了一个与重命名的名称相同的新 .cs 和一个新的 .designer.cs 文件放在旧(未重命名)a.designer.cs 文件旁边的原始(重命名).cs 文件下!

谁能告诉我我应该采取的步骤顺序?

【问题讨论】:

  • 我总是不得不在 Finder 中手动重命名 *.designer.cs 文件,然后打开 *.csproj 文件并在文本编辑器中手动编辑它。虽然我没有确切的步骤,但希望 Xamarin 中的一位可以启发我们。

标签: xamarin.ios monodevelop


【解决方案1】:

重命名文件很棘手,因为 MD 不支持重命名分组文件。您必须手动编辑 csproj,或从项目中删除文件,在 Finder 中重命名,然后重新添加。

重命名类稍微容易一些,但关键是要了解该类实际上有两个名称 - .NET 名称和 Obj-C 名称。重命名 .NET 名称应该很容易,您只需使用 MD 中的重命名命令即可。

Obj-C 名称应用于 [Register("SomeName")] 属性上的类,并且是在 xibs 和 Xcode 中使用的名称。但是,请注意 MonoDevelop 将尝试创建它认为是在 Xcode 中创建的任何类的 .NET 副本。这意味着您应该先在 MonoDevelop 中更改 Obj-C 名称,然后切换到 Xcode 并在那里更改自定义类。

【讨论】:

    【解决方案2】:

    您必须进入 .csproj 文件并添加标签。例如:

       <Compile Include="MainWindow.cs" />
        <Compile Include="MainWindow.designer.cs">
          <DependentUpon>MainWindow.cs</DependentUpon>
        </Compile>
    

    这将在 MonoDevelop 项目窗口中显示文件之间的正确关系。

    顺便说一句,到目前为止,我的经验是这种依赖纯粹是为了方便。将新的 Designer.cs 文件添加到解决方案中,代码编译得很好:依赖似乎是一种文档。

    另外:要删除或重命名这些依赖文件,您不能在 MonoDevelop 项目窗格中执行此操作:您必须转到 Finder(如果您在 OSX 中,如果您在 Windows 中则使用资源管理器)并处理使用那里的文件,重命名或以其他方式操作它们,然后手动修复 MonoDevelop csproj 文件。好消息是,这并不难,而且当你这样做时效果很好,并且你对项目如何结合在一起有了一个很酷的新核心理解。

    【讨论】:

      【解决方案3】:

      许多人还不得不考虑版本控制系统。这种方式对我有用:

      1. 退出 MonoDevelop
      2. 在版本控制系统中,重命名文件
      3. 在文本编辑器中打开 csproj 文件 - 搜索和替换
      4. 打开 MonoDevelop
      5. 打开 XxxViewController.cs - 搜索和替换
      6. 打开 XxxViewController.designer.cs - 搜索和替换
      7. 打开 XxxViewController.xib - 搜索和替换

      您可能想在第 5 步中使用重构/重命名而不是搜索和替换,但这会导致 MonoDevelop 出于某种原因将 XxxViewController.designer.cs 重命名为 XxxViewController_1.cs。

      此外,您可能想在版本控制系统中重命名文件之前从项目中删除文件,然后再次将它们添加回您的项目中(这样您就不必手动编辑 csproj 文件)。这将起作用,但“DependentUpon”部分将从 csproj 文件中消失,这会导致设计器文件不在其对应文件之下。没什么大不了的,但在解决方案资源管理器中看起来不太好。

      【讨论】:

        【解决方案4】:

        我尝试了上述所有解决方案,但都没有奏效。最后,我只是使用“替换文件”来查看整个解决方案。之后,我在项目中进行了“重建”并且工作正常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-26
          • 2011-12-07
          • 1970-01-01
          • 1970-01-01
          • 2010-09-07
          • 1970-01-01
          相关资源
          最近更新 更多