【发布时间】:2020-01-03 02:12:23
【问题描述】:
我正在尝试在我们的 tfs 服务器上构建一个新的解决方案,我遇到了很多错误,这里有几个例子:
App_Start\BundleConfig.cs (1,18): errorCS0234: 类型或命名空间 名称空间“System.Web”中不存在名称“优化”(是 您缺少程序集参考?) App_Start\FilterConfig.cs (1,18): errorCS0234:类型或命名空间名称“Mvc”不存在于 命名空间“System.Web”(您是否缺少程序集引用?) App_Start\RouteConfig.cs (1,18): errorCS0234: 类型或命名空间 名称空间“System.Web”中不存在名称“Mvc”(您是 缺少程序集参考?) App_Start\WebApiConfig.cs (1,7): errorCS0246: 类型或命名空间名称“Newtonsoft”不能是 找到(您是否缺少 using 指令或程序集引用?) App_Start\WebApiConfig.cs (2,18): errorCS0234: 类型或命名空间 名称空间“System.Web”中不存在名称“Http”(您是 缺少程序集引用?)
为了解决问题,我使用的是 MSBuild:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe
解决方案设置为在 .net 4.7.2 中编译。
如果我在本地运行 MSBuild 命令行,它构建得很好,如果失败并出现上述错误,则在服务器上构建。我不确定我错过了什么。它还在本地的 Visual Studio 2019 中构建良好。
我检查了我的引用,这些引用是任何 nuget 包的一部分,它们指向包位置中的 dll。即
C:\somepath\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll
有什么想法吗?
编辑:我添加了 build.proj 文件来恢复 nuget 包:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0"
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutDir Condition=" '$(OutDir)'=='' ">$(MSBuildThisFileDirectory)bin\</OutDir>
<Configuration Condition=" '$(Configuration)'=='' ">Release</Configuration>
<SourceHome Condition=" '$(SourceHome)'=='' ">$(MSBuildThisFileDirectory)src\</SourceHome>
<ToolsHome Condition=" '$(ToolsHome)'=='' ">$(MSBuildThisFileDirectory)tools\</ToolsHome>
</PropertyGroup>
<ItemGroup>
<Solution Include="DCOAPI.sln">
<AdditionalProperties>OutDir=$(OutDir);Configuration=$(Configuration)</AdditionalProperties>
</Solution>
</ItemGroup>
<Target Name="RestorePackages">
<Exec Command=""NuGet.exe" restore "%(Solution.Identity)"" />
</Target>
<Target Name="Clean">
<MSBuild Targets="Clean"
Projects="@(Solution)" />
</Target>
<Target Name="Build" DependsOnTargets="RestorePackages">
<MSBuild Targets="Build"
Projects="@(Solution)" />
</Target>
<Target Name="Rebuild" DependsOnTargets="RestorePackages">
<MSBuild Targets="Rebuild"
Projects="@(Solution)" />
</Target>
</Project>
我收到这条消息:
packages.config 中列出的所有包都已安装。
当通过 MSBuild 构建和我的两个项目构建时,但 web api v2 proj 没有构建,我得到了上面的所有错误。
这些是相关的包:
<packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net472" />
<package id="bootstrap" version="3.4.1" targetFramework="net472" />
<package id="jQuery" version="3.3.1" targetFramework="net472" />
<package id="Microsoft.AspNet.Mvc" version="5.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi" version="5.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net472" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net472" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="2.0.1" targetFramework="net472" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net472" />
<package id="Modernizr" version="2.8.3" targetFramework="net472" />
<package id="Newtonsoft.Json" version="11.0.1" targetFramework="net472" />
<package id="WebGrease" version="1.6.0" targetFramework="net472" />
</packages>
我还需要安装其他东西吗?
【问题讨论】:
-
您的构建过程是否包括恢复 nuget 包的步骤?
-
@JonathonChase 不是你的意思是像预构建事件吗?如果不是预构建事件,我将在哪里查看?我用我的 nuget 设置更新了问题
-
This document 可能会有所帮助。它显示了如何修改项目以添加 MSBuild 的还原步骤。您可能会复制服务器上发生的事情,方法是在本地删除您的
packages文件夹,然后尝试从命令行进行 MSBuild。 -
另外,这个问题可能会有所帮助:stackoverflow.com/questions/33565296/…
-
@JonathonChase 感谢您提供信息,在创建 build.proj 和其他部分后,这似乎不是问题,当我通过 MSBuild 命令行在服务器上构建时仍然遇到相同的错误.
标签: c# .net msbuild visual-studio-2019 .net-4.7.2