Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Msbuild Visual Studio联机生成在依赖项目NuGet引用上失败_Msbuild_Azure Devops - Fatal编程技术网

Msbuild Visual Studio联机生成在依赖项目NuGet引用上失败

Msbuild Visual Studio联机生成在依赖项目NuGet引用上失败,msbuild,azure-devops,Msbuild,Azure Devops,我正在使用Visual Studio Online进行回购和构建。这是我的TFS层次结构 <ClassLibraries> │ ├───<Solution 1> │ └───Build.Proj │ └───.NuGet │ └───NuGet.exe

我正在使用Visual Studio Online进行回购和构建。这是我的TFS层次结构

            <ClassLibraries>
                │
                ├───<Solution 1>
                │   └───Build.Proj
                │   └───.NuGet
                │       └───NuGet.exe
                │       └───NuGet.Config
                │       └───NuGet.Targets
                │   └───<Project 1>                 // Common Code
                │       └───Project1.csproj
                │   └───<Project 2>                 // Common Code Unit Test
                │       └───Project2.csproj
                │
                ├───<Solution 2>
                │   └───Build.Proj
                │   └───.NuGet
                │       └───NuGet.exe
                │       └───NuGet.Config
                │       └───NuGet.Targets
                │   └───<Project 3>
                │       └───Project1.csproj
                │   └───<Project 4>
                │       └───Project2.csproj

│
├───
│   └───建筑工程
│   └───.努吉
│       └───NuGet.exe
│       └───NuGet.Config
│       └───努杰,目标
│   └───                 // 通用代码
│       └───Project1.csproj
│   └───                 // 公共代码单元测试
│       └───项目2.csproj
│
├───
│   └───建筑工程
│   └───.努吉
│       └───NuGet.exe
│       └───NuGet.Config
│       └───努杰,目标
│   └───
│       └───Project1.csproj
│   └───
│       └───项目2.csproj
我有一个解决方案1的构建定义,它能够成功地构建,并根据需要毫无问题地恢复NuGet包

Solution 2.sln文件包含解决方案1中的项目1作为依赖项,因为项目3和项目4都对其具有代码依赖项(解决方案1是我的通用代码解决方案,它几乎包含在所有内容中)

解决方案2的生成定义失败,因为它找不到项目1的NuGet依赖项。我猜Build.Proj中的RestorePackages目标忽略了依赖项目

              <Target Name="RestorePackages">
                <Exec Command="$(MSBuildThisFileDirectory).NuGet\NuGet.exe restore %(Solution.Identity)" />
              </Target>


我不明白为什么。如果我在解决方案2上本地执行“msbuild build.proj”,则它会成功地清理和生成所有项目。

我已经确定,在本例中,我的build.proj文件需要直接引用解决方案1:

  <ItemGroup>
    <Solution Include="$(MSBuildThisFileDirectory)*.sln" /> 
    <Solution Include="$(MSBuildThisFileDirectory)..\Solution1\*.sln" />
  </ItemGroup>

然后,这将导致MSBuild对依赖项目执行NuGet包还原。问题解决了。有点

在我删除了所有本地代码并从回购协议中获取最新信息后,我意识到VS2013展示了我最初看到的行为。因此,我现在需要研究如何以与我正在使用的build.Proj文件相同的方式生成IDE,该文件用于从命令行执行的VSO和msbuild