这是我的配置:
我有一个"文件/新项目"控制台应用程序,我的项目文件夹是:
c:\ConsoleApplication1\ConsoleApplication1
... Program.cs and source files
c:\ConsoleApplication1\ConsoleApplication1.sln
c:\ConsoleApplication1\nuget.config
Run Code Online (Sandbox Code Playgroud)
我的nuget.config档案是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositorypath" value="c:\blah" />
</config>
</configuration>
Run Code Online (Sandbox Code Playgroud)
现在,当我安装或恢复软件包时,它们总是安装packages在项目文件夹中的文件夹中
我正在使用VisualStudio 2015 RC
我有目录结构,如 -
Projects
.nuget
NuGet.exe
NuGet.config
NuGet.targets
**packages (I want to download package for different solution HERE ONLY)**
Sources
Applications
App1
App1.sln (Solution File)
**packages (NuGet downloads packages here first then copies to expected folder, WHY??)**
App1 (Porject Directory)
App1.csproj
App2
App2.sln (Solution File)
**packages (NuGet downloads packages here first then copies to expected folder, WHY??)**
App2 (Porject Directory)
App2.csproj
Run Code Online (Sandbox Code Playgroud)
我使用以下代码在每个解决方案中引用了.nuget文件夹
Project("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}") = ".nuget", ".nuget", "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}"
ProjectSection(SolutionItems) = preProject
..\..\..\.nuget\NuGet.Config = ..\..\..\.nuget\NuGet.Config
..\..\..\.nuget\NuGet.exe = ..\..\..\.nuget\NuGet.exe
..\..\..\.nuget\NuGet.targets = ..\..\..\.nuget\NuGet.targets
EndProjectSection
EndProject …Run Code Online (Sandbox Code Playgroud) 环境:VS Enterprise 2015 Update 1,程序包管理器控制台主机版本3.3.0.167
重现的步骤:只需创建一个目标为.Net 4.5.2的新项目(例如控制台应用程序)(但也尝试使用其他.net版本).
当我安装nuget包时,下载包并且看似安装没有错误.但是,nuget不会添加对dll的引用.当查看packages文件夹时,事实证明没有.dlls解压缩,虽然.nupkg文件在那里并且没有损坏(我可以使用nuget包浏览器打开它并查看lib文件夹的内容).
知道是什么原因引起的吗?
包管理器控制台中的输出:
PM> install-package log4net -verbose
Attempting to gather dependencies information for package 'log4net.2.0.5' with respect to project 'ConsoleApplication4', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for package 'log4net.2.0.5' with DependencyBehavior 'Lowest'
Resolving actions to install package 'log4net.2.0.5'
Resolved actions to install package 'log4net.2.0.5'
For adding package 'log4net.2.0.5' to project 'ConsoleApplication4' that targets 'net452'.
For adding package 'log4net.2.0.5' to project 'ConsoleApplication4' that targets 'net452'.
Adding package 'log4net.2.0.5' to folder 'c:\Projects\ConsoleApplication4\packages'
Added package 'log4net.2.0.5' …Run Code Online (Sandbox Code Playgroud) 我在Team Services中使用持续集成功能(Visual Studio Online).我的构建定义针对的是解决方案(而不是整个解决方案)中的特定项目,即ClientUI MVC网站.
该解决方案包含三个项目:
ClientUI项目的构建定义:
存储库:
Visual Studio Build
在尝试定位单个项目之前,我的构建定义是使用以下参数定位整个解决方案:
它工作正常.但是现在,它会在Nugget Restore任务中生成此错误:
2016-04-22T21:07:00.6716725Z Set workingFolder to default: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\tasks\NuGetInstaller\0.1.25
2016-04-22T21:07:00.8163908Z Executing the powershell script: C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\tasks\NuGetInstaller\0.1.25\NuGetInstaller.ps1
2016-04-22T21:07:01.5283529Z ##[error]Cannot find path 'C:\a\1\s\packages.config' because it does not exist.
2016-04-22T21:07:01.5439897Z C:\LR\MMS\Services\Mms\TaskAgentProvisioner\Tools\agents\1.98.1\agent\worker\tools\NuGet.exe restore "C:\a\1\s\packages.config" -NonInteractive
2016-04-22T21:07:03.0441507Z MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-22T21:07:03.0597010Z ##[error]Cannot determine the packages folder to restore …Run Code Online (Sandbox Code Playgroud)msbuild continuous-integration nuget-package-restore azure-devops azure-pipelines
在Team Services(以前是VSO)中在托管的构建代理上还原AutoMapper的问题确实很奇怪。它只是失败并显示警告“无法找到软件包AutoMapper的5.1.1版本”。
我们有一个自定义和私有的nuget仓库,因此我们不得不添加nuget.config列出所有源,但是由于某种原因,找不到AutoMapper!即使删除了packages文件夹,它在Visual Studio IDE中也可以正常工作。
为了测试它是否是带有nuget源的自定义设置,我为另一个解决方案创建了一个版本,该版本很高兴地通过了还原,因为那里没有对AutoMapper的引用。
我不能断定它是AutoMapper,因为它可以在IDE中运行,但是我不能说nuget.config是一个问题,或者是因为第二个解决方案可以工作(存在另一个问题)
到目前为止,我们一直在使用Azure VM来构建应用程序。由于法律要求,我们被指示将这些活动转移到位于代理后面的本地服务器上。现在,我看到构建失败并显示以下日志消息:
##[error]getaddrinfo ENOTFOUND dist.nuget.org dist.nuget.org:443
Run Code Online (Sandbox Code Playgroud)
所以我假设这可能是由于nuget代理配置。因此,我尝试添加具有正确代理设置的nuget.config文件,然后将其检查到解决方案中,但这没有任何改变。还尝试下载CLI并设置nuget代理配置设置,但同样无济于事。
奇怪的是;当我从cmd在本地运行命令时,一切正常!所以我一定在这里想念什么,但是呢?
我在Visual Studio 2017中启用了PackageReference此功能,以便程序包引用将存储在csproj文件中而不是package.config文件中
我在csproj文件中添加了这两行以启用PackageRefernce
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
Run Code Online (Sandbox Code Playgroud)
现在,当我使用Nuget软件包管理器安装任何软件包时,我会看到类似这样的内容
带有蓝色图标的引用将作为软件包添加。
但是,我packages在解决方案目录下的文件夹中看不到任何这些软件包。此外,如果我右键单击蓝色图标(即引用)并单击属性,则窗口为空白。我看不到其引用的路径
那么,Visual Studio何时下载软件包?引用已启用
nuget nuget-package nuget-package-restore visual-studio-2017
在vs 2017中使用msbuild 15.0时是否可以指定私有nuget feed服务器?我正在使用的当前powershell命令如下:
&$msbuild /t:restore /tv:15.0 /t:Rebuild /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
默认情况下,这只是获取nuget.org的feed.
在另一台计算机上打开项目并在VS Code上运行它后,发生了以下问题:
C:\Program Files\dotnet\sdk\2.2.300\NuGet.targets(121,5): error : The
local source C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\'
doesn't exist.
Run Code Online (Sandbox Code Playgroud)
我找到了VS的解决方案,但没有VS代码。
我有以下.nuspec文件,用于定义我的程序包(为提高可读性而进行了简化):
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
.
.
.
<dependencies/>
<contentFiles>
<files include="any\any\config\*.*" buildAction="None" copyToOutput="true" flatten="false"/>
</contentFiles>
</metadata>
<files>
<file src="bin\Assembly.dll" target="lib\net461" />
<file src="bin\Assembly.pdb" target="lib\net461" />
<file src="Config\cf.xml" target="contentFiles\any\any\config"/>
<file src="Config\cf.txt" target="contentFiles\any\any\config"/>
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
如您所见,它在子目录中包含一个已编译的Assembly及其调试符号文件以及两个内容文件。
这将导致以下编译输出,其中Assembly.dll被提取到输出目录以及config子目录(其中包含两个cf. *文件):
我想要做的是将子目录配置在目录树中上移一个,因此它位于输出目录旁边 -基本上维护.nuspec文件中输入文件的结构(假设bin是目录的输出目录)我的.csproj):
如何告诉NuGet程序包我要将contentFiles提取到的确切位置?