在 mv 到其他目录之后,Dotnet CLI 无法构建?

Posted

技术标签:

【中文标题】在 mv 到其他目录之后,Dotnet CLI 无法构建?【英文标题】:Dotnet CLI fails building after mv to other directory? 【发布时间】:2021-05-06 10:29:47 【问题描述】:

目前,我正在一家较小的公司进行第一次实习的第二天,我必须使用 C# 构建一些东西。除了 Unity 之外,我以前从未使用过 C#,所以我在使用它方面还算新鲜。我目前在 Linux Ubuntu 20 上使用它。所以请原谅我这个最有可能是初学者的问题。

我正在使用 dotnet-sdk 构建调用“dotnet clean; dotnet build; dotnet ~/pathToDLL/etc/etc”。我现在终于有了一些工作,所以我从公司克隆了空的 git 存储库,并使用 mv 命令将我的目录与一些工作代码移动到 git 存储库。现在,当我尝试构建它时,会出现以下错误:

/snap/dotnet-sdk/107/sdk/5.0.102/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): 错误 NETSDK1004:资产文件 '/home/oscar/ 未找到 Tacho/card_reader/obj/project.assets.json'。 运行 NuGet 包还原以生成此文件。 [/home/oscar/Tacho/card_reader/card_reader.csproj]

它两次给出或多或少相同的错误。

/snap/dotnet-sdk/107/sdk/5.0.102/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(241,5): 错误 NETSDK1004:资产文件 '/home/oscar/ 未找到 Tacho/card_reader/obj/project.assets.json'。 运行 NuGet 包还原以生成此文件。 [/home/oscar/Tacho/card_reader/card_reader.csproj]

对于大多数阅读此错误的用户来说,这可能是一个简单的修复。但正如我所说,在 Unity 环境之外,我在 Linux(或 Windows)上使用 C# 的经验为零。因此,任何解释和修复将不胜感激!

奥斯卡

解决了

在我将工作代码复制到的目录中的某处有一个空格。我为这个问题删除了这个空间(以及它之前的所有内容),因为那里有我的老板不想看到的公司敏感信息最终出现在互联网上。由于空间(在 git repo 名称中),Linux 显然在执行命令时出错。感谢大家的帮助。

【问题讨论】:

哪个命令给出了这个错误?你能提供minimal reproducible example吗?如果你只是克隆然后构建,而不重命名目录,这行得通吗? 我已经单独尝试过,发现“dotnet build”命令给出了错误。 git repo 完全是空的,我只是把我的目录和我的代码一起移到那里。当我将目录移回文件系统中的原始位置时,一切都会再次运行。所以这与我想问的一些项目文件中的路径设置有关。 用记事本打开csproj文件,查看路径属性。使用记事本查找问题比尝试在 VS 中查找问题查找和嵌套属性更容易, @jdweng:在 Visual Studio 中打开 .NET Core SDK 样式项目的项目文件会直接显示项目文件内容。因此,除非这是一个真正的“老式”项目,否则没有必要使用记事本。 我建议在移动目录后,删除 obj 和 bin 目录。 (虽然dotnet clean 可以 这样做,但我通常发现直接删除目录更简单。)然后执行dotnet build 并查看问题是否仍然存在。如果是这样,请尝试提供minimal reproducible example,以便我们可以为您提供更多帮助 - 否则我可以看到我们只是来回走很长时间。 【参考方案1】:

该错误似乎表明 NuGet 包缺少某些文件。 NuGet 是一种流行的库分发系统,它也内置在 Visual Studio 中。即使是一个空的存储库也可能将包作为依赖项引用,或者您自己的代码可能正在使用它。如果您使用的是 Visual Studio,您可以执行以下操作:

    通过选择“工具”>“选项”>“NuGet 包管理器”来启用包还原。在包还原选项下,选择允许 NuGet 下载丢失的包。 在解决方案资源管理器中,右键单击解决方案并选择恢复 NuGet 包。

您的公司可能正在使用私有 NuGet 服务器,因此您需要确保已连接到任何 *** 服务。也不要羞于向同事询问这个问题。这可能是正确配置您的环境的一部分,而不是您作为新实习生“只知道”的事情。

【讨论】:

以上是关于在 mv 到其他目录之后,Dotnet CLI 无法构建?的主要内容,如果未能解决你的问题,请参考以下文章

ABP CLI安装

如何在 dotnet cli 中使用“-optimize”?

linux命令学习:mv命令

xUnit dotnet test CLi 输出到 NUnit xml 以便 Bamboo 可以读取结果

dotnet cli与新vs2017 msbuild的关系

mv /lib目录下的so文件之后,为何linux系统什么事情也做不了了?如何恢复环境呢?