我正在尝试使用http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package#From_a_convention_based_working_directory 作为参考创建一个nuget包.Visual Studio中的我的包管理器控制台不允许我使用'nuget'命令.我能够'Get-help nuguet'并显示:
包括以下NuGet cmdlet.
Cmdlet Description
------------------ ----------------------------------------------
Get-Package Gets the set of packages available from the package source.
Install-Package Installs a package and its dependencies into the project.
Uninstall-Package Uninstalls a package. If other packages depend on this package,
the command will fail unless the –Force option is specified.
Update-Package Updates a package and its dependencies to a newer version.
Add-BindingRedirect Examines all assemblies within the output path for a project
and adds binding redirects to …Run Code Online (Sandbox Code Playgroud) 我正在为C#类库创建一个NuGet包,我想在库中包含生成的Xml文档.这是我的nuspec文件:
<?xml version="1.0" encoding="utf-8"?>
<package>
<metadata>
<id>MyLibrary</id>
<version>1.0.0.0</version>
<authors>John Nelson</authors>
<language>en-US</language>
<description>A C# class library</description>
</metadata>
<files>
<file src="..\..\build\MyLibrary.dll" target="lib\Net40" />
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
当我使用此命令构建包时:
nuget pack MyLibrary.nuspec
Run Code Online (Sandbox Code Playgroud)
它会产生错误.如果我删除该行:
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
Run Code Online (Sandbox Code Playgroud)
NuGet.exe成功创建了nupkg.我甚至可以解压缩包,并验证内容是否正确.我究竟做错了什么?xml文件应该进入不同的目标目录吗?
我正在创建我的第一个nuget包.我添加了一个不是最新版本的依赖项.但是,我不想更新到此依赖项的最新版本.是否可以指示它使用特定版本?
<dependencies>
<dependency id="NHibernate" version="3.2.0.3001" />
</dependencies>
Run Code Online (Sandbox Code Playgroud)
当我安装包时,我看到了这个:
Attempting to resolve dependency 'NHibernate (? 3.2.0.3001)'.
Run Code Online (Sandbox Code Playgroud)
这在我安装软件包时会创建以下内容.
<packages>
<package id="Iesi.Collections" version="3.2.0.4000" />
<package id="NHibernate" version="3.2.0.4000" />
</packages>
Run Code Online (Sandbox Code Playgroud)
我真的很想看到这样的事情:尝试解决依赖'NHibernate(3.2.0.3001)'.
Nuget包下载Javascript文件到〜/ Scripts
我更喜欢将我的内容整理到〜/ content文件夹中,其中包含
~/content/css
~/content/images
~/content/scripts
~/content/scripts/vendor (for packages/ downlaoded scripts)
~/content/scripts/site (my own site's JS)
Run Code Online (Sandbox Code Playgroud)
如何让Nuget下载Javascript文件~/content/scripts/vendor?
我已经制作了一个NuGet包,当我从C#项目中使用它时效果很好.它在lib/net40目录中包含一个DLL ,并且DLL被添加为引用.
现在NuGet支持C++,我如何实际修改我的包,以便可以在C++/CLI项目中将DLL添加为托管引用?我找不到任何解释这个的教程.如果我尝试按原样添加包,则会收到以下错误:
您正在尝试将此软件包安装到以"Native,Version = v0.0"为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件.
有人会认为解决方案是将文件放在lib/native下,但根据http://docs.nuget.org/docs/reference/support-for-native-projects,这是不受支持的.此外,简单地将DLL直接放在lib下似乎没有做任何事情.
显然,我应该使用build/native下的文件.props或.targets文件来执行此操作,但是我需要将这些文件放入这些文件中以使其工作?
我的visual studio安装在没有Internet连接的机器上,所以我无法从VS中的NuGet Manager下载安装包.
所以我正在寻找一种方法来使用另一台具有互联网连接的机器下载软件包,然后在VS上安装.
谢谢
我在后期构建事件中使用此命令从项目生成nuget包.变量%conf%设置为正确的配置(调试或发布),并且%1是项目名称(例如"MyCompany.MyProject").
nuget pack -Prop Configuration=%conf% "%1.csproj" -exclude *.sql -IncludeReferencedProjects
Run Code Online (Sandbox Code Playgroud)
此软件包仅供我们自己使用,永远不会在nuget上发布.它以我们的私有存储库结束.
在项目中,有一个设置为generate action : content和的文件copy local : always.(我的视觉工作室是法语,所以我不是百分之百地确定了它的变形).我们来命名吧importantfile.xml.
在生成的包中,我最终得到了这个结构:
- content
- importantfile.xml
- lib
-net45 (.NetFramework,Version=v4.5)
-MyCompany.MyProject.dll
Run Code Online (Sandbox Code Playgroud)
哪个好,我想importantfile.xml部署在包中,因为,这个文件很重要!
当我在另一个项目中安装软件包时,importantfile.xml将部署在项目的根目录下.没关系.但事实并非如此copy local : always.
我需要的importantfile.xml是copy local : always在这个项目中,我安装我的包.
我怎样才能做到这一点?
备注:
我可以copy local : always在安装软件包后立即设置文件,这没什么大不了的.如果以后更新软件包会让这个属性按原样,我会忍受它,但事实并非如此.当更新包,copy local被重置了以never(为说明这里).
项目文件夹中有一个nuspec文件,这里是:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version> …Run Code Online (Sandbox Code Playgroud) copy-local visual-studio nuget nuget-package visual-studio-2012
我想运行本地/内部NuGet存储库.我想我已经想出了如何"重用"现有的NuGet包,方法是将它们包含在使用NuGet的虚拟项目中,并扫描包文件以获取我的本地缓存.nupkg文件,但......
.nupkg从项目中创建nuget package(),自动包含所有 dll依赖项,而不仅仅是通过NuGet获取的依赖项?特别:
.dll文件/其他项目的引用< - 这是缺少的部分.nupkg从我发现的,你应该做的事情
.csproj要添加的文件<BuildPackage>true</BuildPackage>以包含依赖项.nuspec文件并手动列出你的依赖项(类似吗?)nuget pack您的.nuspec文件但一切都是手工的,这是愚蠢的.即使是半自动解决方案仍然是笨拙或半手动:
.nuspec模板 - 似乎不包含依赖项,只包含元数据nuget pack via build-event(步骤#5),你需要手动添加到每个项目,它有自己的怪癖:
"$(SolutionDir).nuget\NuGet.exe" pack "$(ProjectPath)" -Properties Configuration=Release
move /Y *.nupkg "$(TargetDir)"
Run Code Online (Sandbox Code Playgroud)我会满足于.nuspec从项目引用中自动创建清单的东西.然后理论上+ nuget构建事件可以汇总到构建项目/ nuget包中,这是我真正想要看到的.
我有一个自动构建过程,我想扩展,所以我可以构建我通过NuGet分发的库.目前,运行nuget.exe来创建包是一个手动操作.
设置VS 2010的最佳方法是什么,以便我的NuGet包(*.nupkg)文件是"Release"构建的最终结果?
请记住,我有一些包的其他文件(内容和工具).而且,在大多数情况下,我将多个项目合并到一个NuGet包中,以支持.NET 4,Silveright和Phone 7.
(我应该澄清一下,现有的"自动化"流程是一个简单的批处理文件运行器,可以使用命令行构建解决方案.)
UPDATE
我想更新此讨论,因为问题尚未解决.虽然提供的@pravin链接很有帮助,但它并没有解决我在单个包中有多个项目以及PowerShell脚本,配置和源代码转换等其他内容的事实.
我可以使用的最好的例子是具有.NET 4和Silverlight 5版本的程序集.它们分布在同一个包中.我不能使用post-build事件来创建包,因为包依赖于两个项目.
有没有人知道在TeamCity Nuget Feed上删除特定版本的软件包?
nuget-package ×10
nuget ×9
.net ×2
c# ×2
c++-cli ×1
copy-local ×1
dll ×1
msbuild ×1
nuget-server ×1
teamcity ×1
teamcity-7.0 ×1