【问题标题】:Visual Studio 2017 can't find folder that exists in the solutionVisual Studio 2017 找不到解决方案中存在的文件夹
【发布时间】:2018-09-23 13:59:27
【问题描述】:

我有 Visual Studio 2017 项目,我需要在其中打开一个名为 Devdog.General 的文件夹,该文件夹也包含在我的解决方案中。但是,它不会将其识别为现有文件夹,并在我尝试导入它时给我一个缺少目录/命名空间的错误。有关更多信息,请参阅屏幕截图。

【问题讨论】:

  • 也许你需要像这样using Assembly-CSharp.Devdog.General
  • 类的命名空间在代码文件中定义。打开代码文件以查看其命名空间。基于 VS 的默认设置,当您在文件夹层次结构中创建新类时,VS 将为您的类使用由默认项目命名空间 + 点分隔文件夹层次结构组成的命名空间。但是,如果您将类拖放到另一个文件夹中,或者重命名文件夹层次结构,命名空间将不会自动更正。

标签: c# visual-studio unity3d


【解决方案1】:

试试这个按钮:

前几天我遇到了类似的问题,它与 Visual Studio 不知道是项目一部分的文件有关,因为它们是在外部创建的(包括文件夹)。 Visual Studio 可以看到它们,但它对我隐藏了

单击该按钮后,您将能够右键单击该文件夹并选择“包含在项目中”,这将包含用于编译和导航的文件。

【讨论】:

    【解决方案2】:

    首先,尝试选择此“常规”文件夹中的任何“*.cs”文件并检查“属性”视图是否将 构建操作 配置为 编译强>。 Visual Studio 只会编译您的文件,前提是它具有正确的构建操作。

    其次,打开“*.cs”文件并验证其中定义的命名空间是否正确。对于 C#,文件夹结构并不重要:真正重要的是您在其中定义类的命名空间。您可以在与项目中包含的文件夹完全不同的命名空间中定义类。这完全是任意的,取决于您的组织需求。

    下面是一张图片,说明您需要检查的内容(以及检查的位置)。

    【讨论】:

    • 两者都可以确认,Devdog.General.Player.Player.cs有命名空间Devdog.General,其Build Action设置为编译。与其他现有类类似。
    • @JavaHR 请确认以下内容:ThirdPersonUserControl 类是在 Assembly-CSharp-firstpass 项目中定义的,而Devdog.General 类是在另一个项目中定义的(可能是Assembly-CSharp 项目)?如果是这种情况,请检查Assembly-CSharp-firstpass 项目是否引用Assembly-CSharp 项目,以便访问该项目中定义的文件。
    【解决方案3】:

    检查事项
    1.) 检查 .CS 文件中的命名空间 - 它们共同创建您引用的可用命名空间 - 而不是文件夹名称。如果您创建一些文件,然后将它们移动到一个文件夹,并在该文件夹中创建更新的文件,它们将具有不同的命名空间。较新的文件将具有默认命名空间值,后跟 .FolderName。所以一定要检查一下。

    2.) CSPROJ 可能会被淹没并失去对 UI 中显示的文件夹的引用。从项目中删除文件夹(通过 VS2017 UI,右键单击并选择该选项)。不要删除。然后在 UI 中重新创建文件夹(它不应该让您手动导航到文件夹目录并临时重命名 folder.OLD)。重命名文件夹后,尝试重新创建文件夹。成功后将所有 CS 文件从 folder.OLD 移动到新文件夹中。在文件和文件夹恢复到原来的位置后,然后在 Visual Studio 中,在 .cs 文件上“添加现有项目”。这将一一重新创建 CSPROJ 引用。

    3.) 卸载 CSPROJ,右键单击并编辑 CSPROJ 以手动检查 ItemGroups 中的所有 .CS 引用。确保它的myfolder\myotherfolder\mycsfile.cs

    4.) 删除对包含命名空间的其他项目的引用,然后重新添加它们。逐一验证命名空间开始重新出现在 Intellisense 中并确认为已识别。

    5.) 如果您尝试上述步骤,请关闭解决方案,关闭 Visual Studio,导航到 SLN 文件夹容器,然后删除隐藏文件夹 .vs,然后重新打开所有内容。

    有时会发生文件夹重命名或文件传输不会传播到 .CSPROJ 文件夹,然后命名空间不会被智能感知缓存,并且会出现大量错误。

    【讨论】:

    • 也没有用,三个选项都试过了,问题依旧。还尝试创建一个具有不同名称和引用的新文件夹,但没有成功。
    • @JavaHR 添加了另外两个选项。
    【解决方案4】:

    请检查您的文件夹名称和命名空间名称。可能文件夹名称和命名空间不匹配

    enter image description here

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 1970-01-01
      • 2017-08-18
      • 2020-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多