为什么即使我正在使用 MSBuild 任务也找不到项目文件?
Why is the project file not found even though I am using an MSBuild task?
我创建了一个 Azure Devops 构建管道,我正在尝试在 Bitbucket (git) 上构建我的 ASP.NET MVC 和 Angular 混合站点项目。
首先签出项目,Nuget 恢复必要的包,但是,我无法构建 .NET!
我偶然发现了 ,它基本上建议不要使用 dotnet 构建任务,建议只使用 Visual Studio 构建或 MSBuild 任务。
虽然下界对我有用!
- 我试过 VS2017-win2016 托管代理,没用。
- 我试过 Windows 2019 托管代理,没用。
我收到这个错误:
Bobby.ProjectA\Bobby.ProjectA.csproj(713,3): Error MSB4019: The imported project "C:\Program Files\dotnet\sdk.0.100\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the expression in the Import declaration "C:\Program Files\dotnet\sdk.0.100\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" is correct, and that the file exists on disk.
Error: The process 'C:\Program Files\dotnet\dotnet.exe' failed with exit code 1
Dotnet command failed with non-zero exit code on the following projects : D:\a\s\Bobby.ProjectA.Tests\Bobby.ProjectA.Tests.csproj,D:\a\s\Bobby.ProjectA\Bobby.ProjectA.csproj
D:\a\s\Bobby.ProjectA\BobbyProjectA\BobbyProjectA.sln.metaproj(0,0): Error MSB3202: The project file "D:\a\s\Bobby.ProjectA\BobbyProjectA\Bobby.ProjectA\Bobby.ProjectA.csproj" was not found.
D:\a\s\Bobby.ProjectA\BobbyProjectA\BobbyProjectA.sln.metaproj(0,0): Error MSB3202: The project file "D:\a\s\Bobby.ProjectA\BobbyProjectA\Bobby.ProjectA.Tests\Bobby.ProjectA.Tests.csproj" was not found.
Process 'msbuild.exe' exited with code '1'.
由于 Ubuntu 更快,我也尝试过,但是,正如预期的那样 Visual Studio 构建任务失败,因为机器上没有安装 VS。
因此,我尝试使用 MSBuild,并且在 Ubuntu 上运行良好,但是,仍然出现相同的错误,即找不到项目文件。
Project "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Any CPU".
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA/Bobby.ProjectA.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA.Tests/Bobby.ProjectA.Tests.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
Done Building Project "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln" (default targets) -- FAILED.
Build FAILED.
"/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln" (default target) (1) ->
(Build target) ->
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA/Bobby.ProjectA.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA.Tests/Bobby.ProjectA.Tests.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
我几乎用尽了我的搜索,但不确定如何解决这个问题。
以下是显示我的管道任务的一些屏幕截图:
我还认为 x64 架构可能与此有关,但这并没有解决问题。
我偶然发现了一些其他有趣的帖子,例如 this one,但考虑到我的 csproj 文件已经托管在存储库中,我不确定在给出的答案中将项目添加到源代码管理意味着什么并在执行任何任务之前被签出 运行.
我的项目结构和.sln路径(项目):
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29806.167
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bobby.ProjectA", "Bobby.ProjectA\Bobby.ProjectA.csproj", "{12345FE4-4CB9-3245-9A45-DB9A4AF1DFEB}"
根据我的测试,当错误的 csproj 文件路径 映射到 .sln 文件 时,我可以重现类似的问题。
您可以检查您的 .sln file -> project field
。
例如:
文件结构
.csproj文件在WebApplication2文件夹下,所以工程相对路径为WebApplication2\WebApplication2.csproj
.
.sln 文件
VisualStudioVersion = 16.0.30611.23
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApplication2", "WebApplication2\WebApplication2.csproj", "{497AD76F-222C-4BEB-BDCB-401B0E80B5CE}"
EndProject
更新:
经与Cataster讨论,在Msbuild任务中指定**/*.csproj
即可解决导入项目问题。
例如:
我创建了一个 Azure Devops 构建管道,我正在尝试在 Bitbucket (git) 上构建我的 ASP.NET MVC 和 Angular 混合站点项目。
首先签出项目,Nuget 恢复必要的包,但是,我无法构建 .NET!
我偶然发现了
虽然下界对我有用!
- 我试过 VS2017-win2016 托管代理,没用。
- 我试过 Windows 2019 托管代理,没用。
我收到这个错误:
Bobby.ProjectA\Bobby.ProjectA.csproj(713,3): Error MSB4019: The imported project "C:\Program Files\dotnet\sdk.0.100\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the expression in the Import declaration "C:\Program Files\dotnet\sdk.0.100\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets" is correct, and that the file exists on disk.
Error: The process 'C:\Program Files\dotnet\dotnet.exe' failed with exit code 1
Dotnet command failed with non-zero exit code on the following projects : D:\a\s\Bobby.ProjectA.Tests\Bobby.ProjectA.Tests.csproj,D:\a\s\Bobby.ProjectA\Bobby.ProjectA.csproj
D:\a\s\Bobby.ProjectA\BobbyProjectA\BobbyProjectA.sln.metaproj(0,0): Error MSB3202: The project file "D:\a\s\Bobby.ProjectA\BobbyProjectA\Bobby.ProjectA\Bobby.ProjectA.csproj" was not found.
D:\a\s\Bobby.ProjectA\BobbyProjectA\BobbyProjectA.sln.metaproj(0,0): Error MSB3202: The project file "D:\a\s\Bobby.ProjectA\BobbyProjectA\Bobby.ProjectA.Tests\Bobby.ProjectA.Tests.csproj" was not found.
Process 'msbuild.exe' exited with code '1'.
由于 Ubuntu 更快,我也尝试过,但是,正如预期的那样 Visual Studio 构建任务失败,因为机器上没有安装 VS。 因此,我尝试使用 MSBuild,并且在 Ubuntu 上运行良好,但是,仍然出现相同的错误,即找不到项目文件。
Project "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "Debug|Any CPU".
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA/Bobby.ProjectA.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA.Tests/Bobby.ProjectA.Tests.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
Done Building Project "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln" (default targets) -- FAILED.
Build FAILED.
"/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln" (default target) (1) ->
(Build target) ->
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA/Bobby.ProjectA.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln.metaproj : error MSB3202: The project file "/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/Bobby.ProjectA.Tests/Bobby.ProjectA.Tests.csproj" was not found. [/home/vsts/work/1/s/Bobby.ProjectA/BobbyProjectA/BobbyProjectA.sln]
我几乎用尽了我的搜索,但不确定如何解决这个问题。
以下是显示我的管道任务的一些屏幕截图:
我还认为 x64 架构可能与此有关,但这并没有解决问题。
我偶然发现了一些其他有趣的帖子,例如 this one,但考虑到我的 csproj 文件已经托管在存储库中,我不确定在给出的答案中将项目添加到源代码管理意味着什么并在执行任何任务之前被签出 运行.
我的项目结构和.sln路径(项目):
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29806.167
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bobby.ProjectA", "Bobby.ProjectA\Bobby.ProjectA.csproj", "{12345FE4-4CB9-3245-9A45-DB9A4AF1DFEB}"
根据我的测试,当错误的 csproj 文件路径 映射到 .sln 文件 时,我可以重现类似的问题。
您可以检查您的 .sln file -> project field
。
例如:
文件结构
.csproj文件在WebApplication2文件夹下,所以工程相对路径为WebApplication2\WebApplication2.csproj
.
.sln 文件
VisualStudioVersion = 16.0.30611.23
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApplication2", "WebApplication2\WebApplication2.csproj", "{497AD76F-222C-4BEB-BDCB-401B0E80B5CE}"
EndProject
更新:
经与Cataster讨论,在Msbuild任务中指定**/*.csproj
即可解决导入项目问题。
例如: