我有一个大的解决方案,其中包含多个项目。 像这样:
main.sln
-ProjectA_api.proj
-ProjectA_BL.proj
-ProjectA_Common.proj
-Project B....etc
api消耗BL,BL消耗common。
它们都消耗nuget包。
主要解决方案具有一个Nuget.Config文件,该文件描述了所有软件包的存储位置。
当我在ProjectA_api.proj上从vs2017运行本地构建时,一切正常完成。而且我可以将ProjectA_api.proj发布到网络上。
我尝试使用VSTS生成服务使此过程自动化(我的最终目标是发布到Azure Web App)。
看起来像这样:
获取资源任务获取与此版本相关的所有相关资源:
sln的Nuget.Config文件以及所有项目(API,BL,COMMON)。
还原Nuget任务具有以下设置:
运行此过程时,还原很好,msbuild会工作一段时间,直到出现错误:
“ ProjectA_Common.proj”的名称空间“ Microsoft”中没有类型或名称空间名称“ Azure”(Azure)不存在(您是否缺少程序集引用?)(ProjectA_common.proj使用3个引用,其中之一是天蓝色参考)。
所有解决方案包都包含在解决方案级别包文件夹中。我还尝试为所有项目添加nuget restore,但仍然是相同的错误。是否可以通过这种方式完成我的目标,还是只为这些项目制定一个解决方案(我不想这样做)?
谢谢
修改
在projectA_common中,我具有正确的packages.config:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Google.Protobuf" version="3.5.1" targetFramework="net461" />
<package id="Microsoft.WindowsAzure.ConfigurationManager" version="3.2.3" targetFramework="net452" />
<package id="MySql.Data" version="8.0.12" targetFramework="net461" />
</packages>
我试图更改targetFramework,但没有成功。还注意到其他软件包还可以。
编辑2-Nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<config>
<add key="repositoryPath" value="packages" />
</config>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
common.proj文件内的引用
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\Microsoft.WindowsAzure.ConfigurationManager.3.2.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
</Reference>