错误 CS0246:找不到类型或命名空间名称“CsvHelper”

error CS0246: The type or namespace name 'CsvHelper' could not be found

提问人:Tarek Abed 提问时间:9/12/2022 更新时间:9/19/2022 访问量:2027

问:

我是Unity和C#的新手,希望我的问题足够清楚。
这是一个 Unity 测试项目,仅显示问题。
在 Mac 上:我创建了一个新类并使用 Visual Studio 打开它,使用以下命令添加了 CsvHelper 包:Tools => Manage NuGet Packages => Add Package。
包已成功添加到包中,如下所示 解决方案

完成后,我能够添加代码行:Visual Studio 智能感知识别它。using CsvHelper;

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using CsvHelper;

public class Level {

}

回到Unity,它向我显示了错误:

切换回Visual Studio,它开始显示错误。
error CS0246: The type or namespace name 'CsvHelper' could not be found (are you missing a using directive or an assembly reference?)

在 Windows 上:我做了同样的事情,遇到了同样的错误,除了我还尝试通过以下方式添加引用:Project => Add Reference。完成此操作后,错误将从 Visual Studio 中消失,仍存在于 Unity 中。
关闭 Visual Studio 将在那里重新创建错误,并且我添加的引用将从“引用”下的“解决方案资源管理器”中消失。

我不知道我错过了什么,几乎尝试了这里所有我能够理解的建议。请原谅我对术语和正确做法的理解不足。

C# visual-studio unity-game-engine 命名空间 nuget-package

评论


答:

4赞 Nikolai 9/12/2022 #1

要正确解决问题,您需要了解两点。

  1. 您有一个文件,其中指定了所有依赖项,例如 ,依此类推。当 Visual Studio 检查代码时,它会基于此文件显示错误,例如“缺少命名空间”。*.csprojCsvHelperUnityEngine*.csproj
  2. 此文件对 Unity 没有任何意义。Unity 会自动生成这些文件,以使您的 IDE(Visual Studio、Rider 或任何其他文件)正常工作。*.csproj

因此,在 Visual Studio 中添加依赖项时,这意味着只有 Visual Studio 知道此依赖项,因此它不会显示任何错误。但是当 Unity 检查此代码时,它没有看到此依赖项,因此它显示错误。

要在 Unity 中添加依赖项,通常只需将文件放在文件夹中的某个位置即可。执行此操作时,Unity 将自动重新生成文件,并将此 dll 添加为它们的依赖项。您可以在此处阅读有关它的更多信息 https://docs.unity3d.com/Manual/UsingDLL.html*dllAssets/*.csproj

你提到了NuGet,所以我认为这个Unity插件会对你有所帮助。您可以使用它轻松管理 Unity 项目中的 nuget 员工。https://github.com/GlitchEnzo/NuGetForUnity

您可能不使用 Unity AssemblyDefenition 文件。但是,如果您这样做,那么,在将dll添加到文件夹后,您还必须在此文件中指定它。你可以在这里阅读更多关于它的信息 https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.htmlAsset/*.asmdef

评论

0赞 Tarek Abed 9/12/2022
谢谢你,一个很好的解释答案。先生,您是救命稻草。