把$(SolutionDir)\ p​​ackages \放在.csproj文件而不是.. \ packages \

时间:2015-10-06 13:00:04

标签: c# visual-studio msbuild nuget .net-4.5

我有一个解决方案,其中包含一些用于多个其他项目的类库。当我从VS执行Install-Package时,它将$(SolutionDir)\packages\并将其转换为相对路径,例如..\packages\。然后将其保存到.csproj文件中。

我的问题是这些.csproj文件在具有不同文件层次结构的不同位置使用,这意味着..\packages\在某些其他解决方案中不会指向$(SolutionDir)\packages\。所以问题是,如何让它$(SolutionDir)\packages\写入.csproj文件而不是..\packages\

2 个答案:

答案 0 :(得分:3)

你无法让NuGet将$(SolutionDir)\ p​​ackages写入项目文件。您需要修改其源代码。

NuGet为多个解决方案提供了一种通过在NuGet.Config file中定义此目录来共享公共包目录的方法。

var getAdmin = function() {
    var rootRef = new Firebase(FIREBASE_URI),
        adminList = [],
        deferred = $q.defer();

    rootRef.child('user').orderByChild('role').startAt(21).once('child_added',  function (administrator) {
        // Add each Administrator to Admin List
        adminList.push(administrator);
    });

    // deferred.resolve(?)

    return deferred.promise;
};

您可以将此NuGet.config文件放在解决方案的公共父目录中,然后NuGet会找到它并将其用于解决方案。

答案 1 :(得分:0)

可以使用的一件事是您将所有解决方案保持在一个级别。这样,包文件夹对于所有解决方案/项目都处于同一级别。