在Win11系统中使用TeamCity执行BuildStep时C#/.net6.0的跨平台项目无法build的问题解决

环境:

MacOS (M2/ARM) -> Parallels Desktop -> Windows 11 ARM

没有装任何Visual Studio

直接装的TeamCity的BuildAgent

dotnet-sdk-6.0.401-win-x64.exe以及dotnet-sdk-6.0.302-win-x64.exe

JetBrains Rider 2022.2 & .net 6 构建的 console项目


问题:

使用

dotnet --list-sdks

只显示一个5.0.408的sdk(之前装的,在系统刚初始化时候好像list不出来别的sdk)

我明明安装了6.0.401和6.0.302两个sdk,但是都没列出来.然后看

C:\Program Files\dotnet\sdk目录下,只有5.0.408,跟在cmd中执行命令列出来的情况一样.

这个问题我在Win7上也出现过,Win7的电脑也是装了Visual Studio之后不能buid项目,同样的提示内容:

 

C:\Program Files\dotnet\sdk\5.0.408\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(141,5): error NETSDK1045: 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持 .NET 6.0 的 .NET SDK 版本。

    生成失败。

也就是说,.net6.0的sdk没安装上,或者是安装上了不起作用

 


解决:

退出所有的正在运行的需要依赖.net的程序


C:\Program Files\dotnet\x64
下的所有文件 剪切

粘贴到 
C:\Program Files\dotnet
 

完毕后无需重启 直接在cmd执行

dotnet --list-sdks

就可以看到列出的sdk了

 


怀疑过的问题:

PD可能会有一些文件夹路径导致的问题.比如在mac系统下的微信聊天记录中的文件,你点右键然后在finder中显示之后,那个文件夹中的文件,不可以直接通过pd复制过去,windows认不到这个文件夹.至少win11 认不到.
我开始是将.net安装包通过在Finder中,右键,在Windows中打开文件的方式安装的,以为该安装包会检测自己的所在路径进行解压之类的导致的错误,然而不是的.这个安装包是解压到了Win系统的Temp目录中然后运行.

管理员运行权限的问题,试了一下也不是的.

302版本有问题401版试试? 也不是的 只是路径问题.

Win11 ARM版的问题? 可能是,也许Win11 Intel的不会有这个问题吧


总结:

1.我总提醒别人要仔细看软件安装说明,但我忽略了,检讨.如果早点看,在安装完以后的成功窗口其实有提示他把文件安装在了x64中

2.可能只移动dotnet.exe能解决这个问题,或者是指移动C:\Program Files\dotnet\x64\sdk文件夹中的6.0.xxx到 C:\Program Files\dotnet\sdk中即可解决这个问题,但是我没有测试.下次再遇到这个问题可以试一下.

3.我下次有机会应该回到Win7系统+vs2019(或是2022?不记得了)的那个电脑上试一下是不是也是这个问题导致不能build

4.微软自己的SDK为什么自己的操作系统不认识???

为了深入理解如何在Visual Studio Team System中利用MSBuild和Team Foundation Build进行跨平台项目的自动构建,你可以参考以下详细步骤和示例配置。 参考资源链接:[深入理解Microsoft MSBuild与Team Foundation Build](https://wenku.csdn.net/doc/6497f60f4ce2147568c05a9f?spm=1055.2569.3001.10343) 首先,MSBuild.NET项目的核心构建工具,支持跨平台开发。为了在不同的平台上自动化构建过程,你可以定义一个跨平台的构建脚本,该脚本将指定不同目标平台的编译参数。 在Team Foundation Server(TFS)或Azure DevOps Services中,你可以创建一个构建定义,用于配置MSBuild的工作方式。以下是一个配置示例: 1. 打开TFS或Azure DevOps Services的Web界面,选择项目,并进入“构建与发布”部分。 2. 创建一个新的构建定义,并选择MSBuild作为构建模板。 3. 在“选项”标签页中,设置MSBuild参数以指定目标平台和配置。例如,对于一个跨平台.NET Core项目,你可以设置`/p:TargetFramework=netcoreapp2.1` 和 `/p:BuildForAnyPlatform=true`。 4. 在“触发器”标签页中,设置自动触发构建的条件,例如代码提交到主分支。 5. 在“代理”标签页中,选择适当的代理来执行构建任务,确保该代理安装了所有必要的SDK和运行环境。 6. 在“步骤”标签页中,添加必要的构建步骤,如“命令行”或“MSBuild”步骤,并配置相应的参数。 7. 保存构建定义并开始构建。构建过程将自动执行定义好的MSBuild脚本,并生成所需平台的目标文件。 通过这种方式,你可以高效地自动化构建过程,并确保项目在不同平台上正确构建和测试。 为了更深入地理解MSBuild和Team Foundation Build的工作机制和高级配置,建议参考《深入理解Microsoft MSBuild与Team Foundation Build》一书。这本书不仅涵盖了基础概念,还详细讲解了复杂的构建场景,包括自定义构建目标和任务的创建,以及如何有效地与版本控制系统集成,提供了一套全面的解决方案,帮助开发者优化构建流程。 参考资源链接:[深入理解Microsoft MSBuild与Team Foundation Build](https://wenku.csdn.net/doc/6497f60f4ce2147568c05a9f?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Afterwards_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值