如何避免单元测试项目随ASP.NET Core站点部署到Azure Web App
问题根因
你当前的GitHub Actions配置中,dotnet build和dotnet publish命令都是直接针对整个解决方案执行的,所以会自动构建、发布解决方案下的所有项目,包括你新增的单元测试项目。
解决方案,二选一即可
方案1:指定Web项目单独构建发布
修改workflow配置文件里的构建和发布命令,直接指定你的Web项目的.csproj文件路径,替换原来的全解决方案执行逻辑。
比如你的Web项目存放在仓库的src/MyWebApp/MyWebApp.csproj路径,就把对应步骤修改为:
- name: Build with dotnet run: dotnet build src/MyWebApp/MyWebApp.csproj --configuration Release - name: dotnet publish run: dotnet publish src/MyWebApp/MyWebApp.csproj -c Release -o ${{env.DOTNET_ROOT}}/myapp
修改后构建发布流程只会处理你指定的Web项目,不会涉及单元测试项目。
方案2:给测试项目标记为不可发布
如果不想改workflow配置,可以直接修改所有单元测试项目的.csproj文件,在根PropertyGroup节点下添加IsPublishable属性:
<PropertyGroup> <!-- 其他原有配置 --> <IsPublishable>False</IsPublishable> </PropertyGroup>
添加后就算执行全解决方案的dotnet publish命令,也会自动跳过这些标记了的测试项目,不会将其打包到发布产物中。
可选优化
如果后续需要在CI流程中自动跑单元测试(测试不通过就终止部署,避免问题代码上线),可以在build和publish步骤之间添加测试步骤:
- name: Run unit tests run: dotnet test test/MyUnitTestProject/MyUnitTestProject.csproj --configuration Release
内容的提问来源于stack exchange,提问作者Gary McGill
相关产品推荐
相关产品推荐

