最近有同学咨询求助,正在使用基于.Net 4.5.X的.Net Framework框架项目,实现CI/CD流程。但是Github Actions在dotnet发布索引中,找不到4.5版本,无法正常运行,这该怎么办呢?
这位同学先后试了很多方法,比如把从windows runner从windows latest切换到windows 2019,期望用高版本的.Net Framework(比如.Net 4.8)的向下兼容性来实现,然后又尝试使用dotnet build -f net45来实现,但遇到了NuGet包的引用错误。一直没有找到解决方法,不得已下,来请求丁老师的帮助。
丁老师在收到帮助请求后,仔细研究了一下GitHub actions windows runner,发现从2025年7月起,GitHub Actions停止了对windows 2019 runner的支持,目前可选的runner只有windows last,windows 2022,windows 2025,如图:

因此,建议最好是提升windows版本,使用更高的.Net Framework版本来实现向下兼容。
其他方法:
1.从NuGet.org中下载.Net Framework 4.5 SDK;
2.删除C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5;
3.对新下载的.Net Framework 4.5 SDK包,解压,然后移动到C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework;
GitHub action例子:
name: test
on:
workflow_dispatch:
push:
branches: ['main']
jobs:
build:
runs-on: windows-2025
env:
projName: net45action
buildCfg: Release
net45SdkUrl: 'https://www.nuget.org/api/v2/package/Microsoft.NETFramework.ReferenceAssemblies.net45/1.0.3'
sdkSystemPath: 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework'
steps:
- name: Install .net framework 4.5 SDK
shell: pwsh
run: |
echo "download ${env:net45SdkUrl}"
Invoke-WebRequest -Uri "${env:net45SdkUrl}" -OutFile "${env:temp}\net45sdk.zip"
echo "unzip net45sdk.zip"
Expand-Archive -Force -LiteralPath "${env:temp}\net45sdk.zip" -DestinationPath "${env:temp}\net45sdk"
echo "delete ${env:sdkSystemPath}\v4.5"
[IO.Directory]::Delete("${env:sdkSystemPath}\v4.5", $True)
echo "move SDK to ${env:sdkSystemPath}\v4.5"
Move-Item -Force -LiteralPath "${env:temp}\net45sdk\build\.NETFramework\v4.5" -Destination "${env:sdkSystemPath}"
- name: Checkout
uses: actions/checkout@v4
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2
- name: Setup VSTest Path
uses: darenm/Setup-VSTest@v1.2
- name: Restore packages
run: nuget restore ${env:projName}.sln
- name: Build
run: msbuild ${env:projName}.sln -p:Configuration=${env:buildCfg}
- name: Run unit tests
run: vstest.console.exe "${env:projName}.test\bin\${env:buildCfg}\${env:projName}.test.dll"在使用libreoffice对office word转换为pdf时,出现source file could not be loaded的错误提示,看了下路径和文件,发现都正确,仔细检查了下,发现是缺少libreoffice的write组...
很多客户的微信小程序,上架后没有被搜索到,这是怎么回事呢?微信小程序上架后多久能被搜索到呢?针对这个问题,丁老师今天进行一下解读。首先,微信小程序在上架前,先要保证完成认证和备案,没有认证和备案的小程序,是无法被搜索到的。微信小程序搜索...
最近在使用Edge浏览器DevTools时,忽然发现在调试css时,html中多了一个图标,提示“ask pilot about this elements and its styles”,如图:经过测试,这个功能其实就是点击了以后,浏...
微信公众号在发布文章时,编辑器只能插入公众号文章的超链接,是无法插入自定义外部链接的。如图:那么如果想在文章内插入链接,引导用户点击该怎么办呢?丁老师可以明确的告诉你,直接插入链接是行不通的。但可以通过其他方式引导用户跳转,比如插入带有...
挺不错的浏览器,强加入了edge image viewer图片浏览器,感觉不是那么好,对于开发者来说,更想要原生的东西。包括微信网页版里的表情图片,用edge image viewer打开的话,无法保存为gif格式,即使保存了,也只是第一帧...
软件介绍Basgito是基于Laravel框架的免费电子商务平台,可以快速搭建自己企业专属的电子商务交易平台,适用于中小型外贸企业。该电商平台拥有无头laravel商务(headless laravel commerce)的强大功能,可以快...
最近要在某单位内网部署项目,使用了lnmp来配置环境,软件安装成功,可安装后不管是打开ip地址还是默认站点,都提示nginx 403 forbidden,这是怎么回事呢?首先,已经出现了nginx 403提示,说明nginx是安装正常的。其...
国外很多VPS购买后,只有密码,没有登录账号,如何登录呢?我们以one.com为例,购买了VPS后,只能设置密码,但是用root,也无法登录,是怎么回事呢?查了官方文档,原来修改的VPS密码,不是root的,这个VPS默认的账号是admin...