搭建 windows 开发环境
- 1: 安装git
- 2: 安装 OpenSSH server
- 3: 安装zsh和ohmyzsh
- 4: 配置 VS Code 的 remote ssh
- 5: 安装.NET SDK
- 6: 安装nuget
- 7: 本地发布
- 8: nuget 401
1 - 安装git
安装 git
下载 git 的 windows 安装包,一路 next 安装即可。
为了避免空格,我将安装路径从默认的 C:\Program Files\Git
修改为 C:\soft\git
。
安装完成之后,除了 git 外,还顺便得到了一个 bash 终端,它至少比 windows 自带的终端要好用。
后面会继续安装 zsh 来替代 bash。
配置自动登录
将本地的 id_rsa.pub 公钥传到 windows 机器
scp id_rsa.pub sky@192.168.0.103:~/.ssh/
然后加入到 authorized_keys ,注意由于登录的账号是 administrator 账号,所以 authorized_keys 的文件路径是 “C:\ProgramData\ssh\administrators_authorized_keys” 而不是 “~/.ssh\administrators_authorized_keys”
用管理员身份运行 bash,然后执行命令:
touch "C:\ProgramData\ssh\administrators_authorized_keys"
cat ~/.ssh/id_rsa.pub >> "C:\ProgramData\ssh\administrators_authorized_keys"
用管理员身份运行 powershell,修改文件属性:
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
之后就可以在 openssh client 直接 ssh ,不用输入密码。
ssh sky@192.168.0.103
参考:
2 - 安装 OpenSSH server
参考:
使用 powershell 安装
注意:必须以管理员身份运行 powershell。
检查是否安装
检查有没有安装 OpenSSH :
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
如果没有安装则输出为:
Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
如果已经安装则输出为:
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : Installed
安装 OpenSSH Client 和 Server
执行安装命令:
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
启动 OpenSSH Server
启动 OpenSSH Server 并验证防火墙设置:
# Start the sshd service
Start-Service sshd
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
设置开机自动启动
# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'
配置 openssh server
配置默认 shell
请在安装好 git (自带bash) 之后再进行这个配置,假定 bash 的安装路径是:C:\soft\git\usr\bin\bash.exe
用 powershell 执行命令:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\soft\git\usr\bin\bash.exe" -PropertyType String -Force
如果想把默认shell修改为 zsh,最好是先安装上面的方法将默认 shell 设置为 git 带的 bash,然后再让bash启动zsh,这样就能够利用到 git 带的 bash 里面的一些基本的 linux 命令。如果直接将默认shell改为 zsh,则 ssh 登录之后会报错如下:
/c/Users/sky/.oh-my-zsh/oh-my-zsh.sh:65: command not found: mkdir
/c/Users/sky/.oh-my-zsh/oh-my-zsh.sh:124: command not found: rm
警告:
这个修改完成后,在终端 ssh 上去可以正常工作。但是用 vs code remote ssh 连接上去,就会报错:
[19:30:31.224] stderr> /usr/bin/bash: line 3: $'\202': command not found
[19:30:31.230] stderr> /usr/bin/bash: line 4: name: command not found
[19:30:31.236] stderr> /usr/bin/bash: line 6: $'\202': command not found
[19:30:31.242] stderr> /usr/bin/bash: line 8: $'\202': command not found
[19:30:31.248] stderr> /usr/bin/bash: line 10: $'\202': command not found
[19:30:31.253] stderr> /usr/bin/bash: line 12: $'\202': command not found
......
[19:31:05.042] stderr> /usr/bin/bash: line 5432: $'\202': command not found
[19:31:05.048] stderr> /usr/bin/bash: line 5434: $'\202': command not found
[19:31:05.054] stderr> /usr/bin/bash: line 5436: $'\202': command not found
[19:31:05.057] Terminating local server
[19:31:05.060] Exec server for ssh-remote+192.168.0.103 failed: Error: Connecting with SSH timed out
暂时先回滚这个配置:
Remove-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Force
3 - 安装zsh和ohmyzsh
参考:
安装 zsh
假定前面已经安装好了 git 并自带 bash。
下载zsh
Zsh下载地址:
https://packages.msys2.org/package/zsh?repo=msys&variant=x86_64
下载 .tar.zst 文件:
https://mirror.msys2.org/msys/x86_64/zsh-5.9-2-x86_64.pkg.tar.zst
这个文件可以用 winrar 解压缩,得到 zsh-5.9-2-x86_64.pkg 目录,里面有两个子目录:etc 和 usr 。
安装zsh
复制 etc 和 usr 目录,粘贴到 git 的安装目录如 C:\Program Files\Git\
,git 安装目录下同样有 etc 和 usr 目录,文件会自动合并进去。
运行zsh
运行时,要先启动 git 自带的 bash 终端,然后执行 zsh 命令,也可以查看 zsh 版本:
zsh --version
为了方便使用,尤其是用 zsh 替代 bash,可以修改 bash 的配置文件 ~/.bashrc
(如果没有就创建它) ,加入内容:
/c/Windows/System32/chcp.com 65001 > /dev/null 2>&1
if [ -t 1 ]; then
exec zsh
fi
这样就可以自动 bash 时自动启动 zsh。
第一次执行时会询问文件创建的问题,选择
Quit and do nothing. The function will be run again next time.
安装 Oh my zsh!
安装
在 zsh 终端执行:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
准备字体
在这里下载并安装几个字体
https://github.com/romkatv/powerlevel10k#meslo-nerd-font-patched-for-powerlevel10k
安装 Powerlevel10k 主题
下载:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
修改
vi ~/.zshrc
增加内容:
ZSH_THEME="powerlevel10k/powerlevel10k"
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(history)
POWERLEVEL9K_SHORTEN_DIR_LENGTH=1
# User configuration
export LS_COLORS="rs=0:no=00:mi=00:mh=00:ln=01;36:or=01;31:di=01;34:ow=04;01;34:st=34:tw=04;34:pi=01;33:so=01;33:do=01;33:bd=01;33:cd=01;33:su=01;35:sg=01;35:ca=01;35:ex=01;32:"
配置插件
下载以下插件:
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/Pilaton/OhMyZsh-full-autoupdate.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ohmyzsh-full-autoupdate
修改 zsh 配置
vi ~/.zshrc
修改 plugins 为
plugins=(
adb
command-not-found
extract
deno
docker
git
github
gitignore
history-substring-search
node
npm
nvm
yarn
volta
vscode
sudo
web-search
z
zsh-autosuggestions
zsh-syntax-highlighting
ohmyzsh-full-autoupdate
)
# User configuration
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor root line)
ZSH_HIGHLIGHT_PATTERNS=('rm -rf *' 'fg=white,bold,bg=red')
重启 zsh。
Updating plugins and themes Oh My ZSH
--------------------------------------
Updating Plugin — ohmyzsh-full-autoupdate -> https://github.com/Pilaton/OhMyZsh-full-autoupdate
Already up to date.
Updating Plugin — zsh-autosuggestions -> https://github.com/zsh-users/zsh-autosuggestions
Already up to date.
Updating Plugin — zsh-syntax-highlighting -> https://github.com/zsh-users/zsh-syntax-highlighting
Already up to date.
Updating Theme — powerlevel10k -> https://github.com/romkatv/powerlevel10k
Already up to date.
4 - 配置 VS Code 的 remote ssh
前面的准备工作中,已经在 windows 上安装了 openssh-server,因此现在可以利用 vs code 的 remote ssh 功能来实现在 windows 上开发代码,但是 vs code 界面可以运行在其他地方,如我的 m1 笔记本。
连接 windows 主机
在 vs code 中,通过 “connect to host” 连接到前面准备好的 windows。
第一次会自动下载并准备 vs code 后端。
打开项目
打开项目时,报错:
C:\Users\sky\work\code\durabletask\durabletask\test\DurableTask.SqlServer.Tests\DurableTask.SqlServer.Tests.csproj : error NU1903: Warning As Error: Package 'System.Data.SqlClient' 4.8.5 has a known high severity vulnerability, https://github.com/advisories/GHSA-98g6-xh36-x2p7 [C:\Users\sky\work\code\durabletask\durabletask\DurableTask.sln]
Failed to restore C:\Users\sky\work\code\durabletask\durabletask\test\DurableTask.SqlServer.Tests\DurableTask.SqlServer.Tests.csproj (in 1.2 sec).
23 of 24 projects are up-to-date for restore.
5 - 安装.NET SDK
.NET 6.0 SDK
https://dotnet.microsoft.com/en-us/download/dotnet/6.0
下载到 dotnet-sdk-6.0.420-win-x64.exe ,执行安装
下载安装 .NET 6.0 SDK
下列项安装于: ""
• .NET SDK 6.0.420
• .NET Runtime 6.0.28
• ASP.NET Core Runtime 6.0.28
• .NET Windows Desktop Runtime 6.0.28
.NET 8.0 SDK
.NET 8.0 SDK
下载到 dotnet-sdk-8.0.203-win-x64.exe ,执行安装,但是不知道安装到哪里去了。。。
下列产品已安装:
• .NET SDK 8.0.203
• .NET Runtime 8.0.3
• ASP.NET Core Runtime 8.0.3
• .NET Windows Desktop Runtime 8.0.3
查看一下:
$ dotnet --version
8.0.203
$ which dotnet
/c/Program Files/dotnet/dotnet
$ echo $PATH
/c/Users/sky/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/sky/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0:/c/Windows/System32/OpenSSH:/cmd:/c/Program Files/dotnet:/c/Users/sky/AppData/Local/Microsoft/WindowsApps:/bin:/c/Users/sky/.dotnet/tools:/usr/bin/vendor_perl:/usr/bin/core_perl
PATH 中增加了两个路径:
/c/Program Files/dotnet
/c/Users/sky/.dotnet/tools
.NET Core 3.1 Runtime
还必须安装这个 3.1 runtime,虽然已经被标注为 此版本已过期:
Testhost process for source(s) 'C:\Users\sky\work\code\durabletask\durabletask\Test\DurableTask.Core.Tests\bin\Debug\netcoreapp3.1\DurableTask.Core.Tests.dll' exited with error: You must install or update .NET to run this application.
App: C:\Users\sky\.nuget\packages\microsoft.testplatform.testhost\15.9.0\lib\netstandard1.5\testhost.dll
Architecture: x64
Framework: 'Microsoft.NETCore.App', version '3.1.0' (x64)
.NET location: C:\Program Files\dotnet\
The following frameworks were found:
6.0.28 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
8.0.3 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Learn more:
https://aka.ms/dotnet/app-launch-failed
To install missing framework, download:
https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.0&arch=x64&rid=win-x64&os=win10
. Please check the diagnostic logs for more information.
下载地址:
下载得到 dotnet-runtime-3.1.32-win-x64.exe 文件,安装即可。
.NET Core 2.1 Runtime
还必须安装这个 2.1 runtime,azure-functions-durable-extension 项目需要:
https://dotnet.microsoft.com/zh-cn/download/dotnet/2.1/runtime
下载得到 dotnet-runtime-2.1.30-win-x64.exe 文件,安装即可。
6 - 安装nuget
下载
下载地址:
https://www.nuget.org/downloads
安装
将 nuget.exe
复制到 C:\soft\nuget
目录,然后修改 windows 系统设置中的 path 环境变量,加入地址 C:\soft\nuget
验证
查看版本:
$ nuget
NuGet 版本: 6.9.1.3
7 - 本地发布
发布到本地
实际操作
durabletask-dotnet 项目
修改 eng\targets\Release.props ,从版本号从 1.2.2:
<VersionPrefix>1.2.2</VersionPrefix>
<VersionSuffix></VersionSuffix>
修改为 1.2.3-alpha
<VersionPrefix>1.2.3</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
修改代码,构建项目:
# git submodule update --init --recursive
# git submodule update --remote: see https://stackoverflow.org.cn/questions/1777854
# cd ~/work/code/durabletask-fork/durabletask-dotnet
rm -rf out/bin
rm -rf out/pkg
dotnet build
dotnet pack
看到输出:
PS C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet> dotnet pack
用于 .NET MSBuild 版本 17.9.6+a4ecab324
正在确定要还原的项目…
所有项目均是最新的,无法还原。
Generators -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Generators\netstandard2.0\Microsoft.DurableTask.Generators.dll
Abstractions -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Abstractions\netstandard2.0\Microsoft.DurableTask.Abstractions.dll
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Generators.1.0.0-preview.1.nupkg”。
Grpc -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Grpc\netstandard2.0\Microsoft.DurableTask.Grpc.dll
Grpc -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Grpc\net6.0\Microsoft.DurableTask.Grpc.dll
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Abstractions.1.2.3-alpha.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Abstractions.1.2.3-alpha.snupkg”。
Client -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Client\netstandard2.0\Microsoft.DurableTask.Client.dll
Worker -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Worker\netstandard2.0\Microsoft.DurableTask.Worker.dll
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Grpc.1.2.3-alpha.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Grpc.1.2.3-alpha.snupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Client.1.2.3-alpha.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Client.1.2.3-alpha.snupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Worker.1.2.3-alpha.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Worker.1.2.3-alpha.snupkg”。
Worker.Grpc -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Worker.Grpc\net6.0\Microsoft.DurableTask.Worker.Grpc.dll
Worker.Grpc -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Worker.Grpc\netstandard2.0\Microsoft.DurableTask.Worker.Grpc.dll
Client.OrchestrationServiceClientShim -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Client.OrchestrationServiceClientShim\netstandard
2.0\Microsoft.DurableTask.Client.OrchestrationServiceClientShim.dll
Client.Grpc -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Client.Grpc\netstandard2.0\Microsoft.DurableTask.Client.Grpc.dll
C:\Program Files\dotnet\sdk\8.0.203\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(221,5): warning NU5104: 包的稳定版本不应有预发布依赖项。请修改依赖
项“Microsoft.DurableTa
sk.Client [1.2.3-alpha, )”的版本规范,或更新 nuspec 中的版本字段。 [C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\src\Client\OrchestrationServiceClientShim\Client.Orchest
rationServiceClientShim.csproj]
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Client.OrchestrationServiceClientShim.1.0.5.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Client.OrchestrationServiceClientShim.1.0.5.snupkg”。
Client.Grpc -> C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out\bin\Release\Client.Grpc\net6.0\Microsoft.DurableTask.Client.Grpc.dll
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Worker.Grpc.1.2.3-alpha.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Worker.Grpc.1.2.3-alpha.snupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Client.Grpc.1.2.3-alpha.nupkg”。
已成功创建包“C:\Users\sky\work\code\durabletask-fork\durabletask-dotnet\out/pkg/Microsoft.DurableTask.Client.Grpc.1.2.3-alpha.snupkg”。
nupkg 和 package 之间的对应关系:
nupkg file | package |
---|---|
Microsoft.DurableTask.Abstractions.1.2.3.nupkg | |
Microsoft.DurableTask.Client.1.2.3.nupkg | |
Microsoft.DurableTask.Client.Grpc.1.2.3.nupkg | microsoft.durabletask.client.grpc |
Microsoft.DurableTask.Client.OrchestrationServiceClientShim.1.0.5.nupkg | |
Microsoft.DurableTask.Generators.1.0.0-preview.1.nupkg | |
Microsoft.DurableTask.Grpc.1.2.3.nupkg | microsoft.durabletask.grpc |
Microsoft.DurableTask.Worker.Grpc.1.2.3.nupkg | microsoft.durabletask.worker.grpc |
Microsoft.DurableTask.Worker.1.2.3.nupkg | microsoft.durabletask.worker |
发布文件到 nuget 本地仓库:
rm -rf "C:\soft\nuget-local-package\microsoft.durabletask.abstractions"
rm -rf "C:\soft\nuget-local-package\microsoft.durabletask.client"
rm -rf "C:\soft\nuget-local-package\microsoft.durabletask.client.grpc"
rm -rf "C:\soft\nuget-local-package\microsoft.durabletask.grpc"
rm -rf "C:\soft\nuget-local-package\microsoft.durabletask.worker"
rm -rf "C:\soft\nuget-local-package\microsoft.durabletask.worker.grpc"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.abstractions"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.client"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.client.grpc"
# rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.generators"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.grpc"
# rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.sidecar"
# rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.sidecar.protobuf"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.worker"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.durabletask.worker.grpc"
nuget add out/pkg/Microsoft.DurableTask.Abstractions.1.2.3-alpha.nupkg -source "C:\soft\nuget-local-package"
nuget add out/pkg/Microsoft.DurableTask.Client.1.2.3-alpha.nupkg -source "C:\soft\nuget-local-package"
nuget add out/pkg/Microsoft.DurableTask.Worker.1.2.3-alpha.nupkg -source "C:\soft\nuget-local-package"
nuget add out/pkg/Microsoft.DurableTask.Grpc.1.2.3-alpha.nupkg -source "C:\soft\nuget-local-package"
nuget add out/pkg/Microsoft.DurableTask.Client.Grpc.1.2.3-alpha.nupkg -source "C:\soft\nuget-local-package"
nuget add out/pkg/Microsoft.DurableTask.Worker.Grpc.1.2.3-alpha.nupkg -source "C:\soft\nuget-local-package"
azure-functions-durable-extension 项目
修改 src\Worker.Extensions.DurableTask\Worker.Extensions.DurableTask.csproj
文件,
<ItemGroup>
......
<PackageReference Include="Microsoft.DurableTask.Client.Grpc" Version="1.2.2" />
<PackageReference Include="Microsoft.DurableTask.Worker.Grpc" Version="1.2.2" />
</ItemGroup>
修改为
<ItemGroup>
......
<PackageReference Include="Microsoft.DurableTask.Client.Grpc" Version="1.2.3-alpha" />
<PackageReference Include="Microsoft.DurableTask.Worker.Grpc" Version="1.2.3-alpha" />
</ItemGroup>
修改 nuget.config
文件
<configuration>
<packageSources>
......
<add key="nugetlocal" value="C:\soft\nuget-local-package" />
</packageSources>
</configuration>
这个项目也需要打包给其他项目用,因此类似的也需要修改版本,打开 src\Worker.Extensions.DurableTask\Worker.Extensions.DurableTask.csproj
文件
<!-- Version information -->
<VersionPrefix>1.1.2</VersionPrefix>
<VersionSuffix></VersionSuffix>
修改为
<!-- Version information -->
<VersionPrefix>1.1.3</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
之后就可以执行
dotnet build
命令来打包
rm -rf "C:\soft\nuget-local-package\microsoft.azure.functions.worker.extensions.durabletask"
rm -rf "C:\Users\sky\.nuget\packages\microsoft.azure.functions.worker.extensions.durabletas"
nuget add "src\Worker.Extensions.DurableTask\bin\Debug\Microsoft.Azure.Functions.Worker.Extensions.DurableTask.1.1.3-alpha.nupkg" -source "C:\soft\nuget-local-package"
quickstart 项目
在项目根目录下增加 nuget.config
文件,内容为:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear/>
<add key="nugetlocal" value="C:\soft\nuget-local-package" />
</packageSources>
</configuration>
修改项目的 csproj 文件,如 MyDurableFunction1.csproj
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.1.2" />
修改为
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.DurableTask" Version="1.1.3-alpha" />
构建之前,最好先删除掉 “C:\Users\sky.nuget\packages" 下要用的依赖(命令在上面),避免缓存造成版本没有更新。
8 - nuget 401
报错
构建时突然遇到 401 (Unauthorized) 错误,然后就无法继续构建:
dotnet build
适用于 .NET MSBuild 版本 17.9.6+a4ecab324
正在确定要还原的项目…
C:\Users\sky\work\code\durabletask\durabletask-dotnet\test\Generators.Tests\Generators.Tests.csproj : error NU1301: 无法加载源 https://pkgs.dev.azure.com/azfunc/e6a70c92-412
8-43
9f-8012-382fe78d6396/_packaging/AzureFunctionsTempStaging/nuget/v3/index.json 的服务索引。 [C:\Users\sky\work\code\durabletask\durabletask-dotnet\Microsoft.DurableTask.sln]
未能还原 C:\Users\sky\work\code\durabletask\durabletask-dotnet\test\Generators.Tests\Generators.Tests.csproj (用时 15.28 sec)。
C:\Program Files\dotnet\sdk\8.0.203\NuGet.targets(169,5): error : 无法加载源 https://pkgs.dev.azure.com/azfunc/e6a70c92-4128-439f-8012-382fe78d6396/_packaging/AzureFunctions
Temp
Staging/nuget/v3/index.json 的服务索引。 [C:\Users\sky\work\code\durabletask\durabletask-dotnet\Microsoft.DurableTask.sln]
C:\Program Files\dotnet\sdk\8.0.203\NuGet.targets(169,5): error : Response status code does not indicate success: 401 (Unauthorized). [C:\Users\sky\work\code\durabletask\
durabletask-dotnet\Microsoft.DurableTask.sln]
访问地址 https://pkgs.dev.azure.com/azfunc/e6a70c92-4128-439f-8012-382fe78d6396/_packaging/AzureFunctions Temp Staging/nuget/v3/index.json
时报错 401:
Response status code does not indicate success: 401 (Unauthorized)
dotnet build --interactive
适用于 .NET MSBuild 版本 17.9.6+a4ecab324
正在确定要还原的项目…
[CredentialProvider]DeviceFlow: https://pkgs.dev.azure.com/azfunc/e6a70c92-4128-439f-8012-382fe78d6396/_packaging/AzureFunctionsTempStaging/nuget/v3/index.json
[CredentialProvider]ATTENTION: User interaction required.
**********************************************************************
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code IDJNNR9QS to authenticate.
**********************************************************************
[CredentialProvider]DeviceFlow: https://pkgs.dev.azure.com/azfunc/e6a70c92-4128-439f-8012-382fe78d6396/_packaging/AzureFunctionsTempStaging/nuget/v3/index.json
[CredentialProvider]ATTENTION: User interaction required.
**********************************************************************
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code IZGMCADU2 to authenticate.
**********************************************************************