我正在尝试为.Net程序集创建NuGet程序包,它会对原生的win32 dll进行pinvoke.我需要将程序集和本机dll打包,并将程序集添加到项目引用中(此部分没有问题),并且应将本机dll复制到项目输出目录或其他相关目录中.
我的问题是:
所以我实际上正在尝试将一个网站项目(不是Web应用程序,所以没有csproj文件)打包成一个准备好让Octopus使用的NuGet包,但是我正在一个又一个的砖墙上运行.
我研究过使用OctoPack,但它不支持网站项目只有Web应用程序项目.
我现在正试图找到一种方法将文件夹(在我的情况下是一个网站)添加到Nuget包中,但Nuget不允许通过命令行这样做吗?它还需要一个.csproj文件!
我也尝试过创建NuGet规范文件并将其传递到文件夹但不可能?
目前我可能不得不使用NuGet包浏览器,但我想编写脚本.
我已经看过这个问题,但似乎没有处理我的场景我 可以创建一个没有项目文件的nuget包
那么有谁知道如何通过命令行最好地将文件夹添加到NuGet包!
当我安装我的自定义NuGet包它可以工作,但VS中的输出窗口显示消息,就像它试图添加文件两次,他们已经存在.这篇文章中的产出进一步下降.
我在服务器上有一个NuGet私有存储库,用于托管我们的库.安装和卸载正在运行,即使输出窗口显示以下消息.我<files>对spec文件中的标记感到好奇,如果有不同的方法我需要这样做.我已经尝试了多种基于文档的方法.我的版本是从NuGet站点安装的最新版本.
从网站: The latest version of the nuget.exe command-line tool is always available from http://nuget.org/nuget.exe
输出窗口在Install-Package CustomNuGet上显示如下内容:
项目/Plugins/CustomNuGet/CSS/custom.css已存在.
项目/Plugins/CustomNuGet/Scripts/custom.js已经存在.
项目/Plugins/CustomNuGet/Views/custom.cshtml已经存在.
输出窗口在Uninstall-Package CustomNuGet上显示如下内容:
在您的工作区中找不到/Plugins/CustomNuGet/CSS/custom.css项.
在您的工作区中找不到/Plugins/CustomNuGet/Scripts/custom.js项.
在您的工作区中找不到/Plugins/CustomNuGet/Views/custom.cshtml项.
我使用命令行工具创建了一个自定义Nuget包.该文件夹如下所示:
/CustomNuGet
CustomNuGet.nuspec
CustomNuGet.0.1.1.nupkg
/content
/lib
CustomNuGet.dll
/Plugins
/Views
custom.cshtml
/Scripts
custom.js
/CSS
custom.css
Run Code Online (Sandbox Code Playgroud)
spec文件是使用:nuget spec和nuget pack根据文档的根CustomeNuGet文件夹中的包创建的.这是spec文件:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>CustomNuGet</id>
<version>0.1.1</version>
<authors>CustomNuGet</authors>
<owners>CustomNuGet</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>CustomNuGet</description>
<tags>CustomNuGet</tags>
<references>
<reference file="CustomNuGet.dll" />
</references>
<dependencies>
<dependency id="WebActivatorEx" version="2.0.0" />
</dependencies>
</metadata>
<files>
<file …Run Code Online (Sandbox Code Playgroud) 我们有一个框架,在一个解决方案中分成许多单独的项目.我现在想为每个单独的项目创建NuGet包,但保证只能在一个解决方案中使用一个版本的框架(可能跨多个项目).
例如,假设框架由两个项目组成:
Framework
Framework_1
Framework_2
Run Code Online (Sandbox Code Playgroud)
现在,当使用此框架时,一个项目可能会引用Framework_1,而另一个项目引用Framework_2.我想确保两个软件包具有相同的版本(如果有一个简单的单步过程升级到新版本,则可获得奖励积分)
我想我会定义一个解决方案级别的Framework包,所有其他包都严格依赖它.问题是NuGet只需安装多个版本的解决方案级别包就没有问题.
基本上我尝试了以下内容:
解决方案级别的nuspec文件:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>My.Framework</id>
<version>1.0.0</version>
<title>My.Framework</title>
<authors>voo</authors>
<owners>voo</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Some Framework Solution Package</description>
<copyright>Copyright © 2015</copyright>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)
和一个nuspec包的一部分:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>My.Framework.BL</id>
<version>1.0.0</version>
<title>My.Framework.BL</title>
<authors>voo</authors>
<owners>voo</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Business Layer</description>
<copyright>Copyright © 2015</copyright>
<dependencies>
<dependency id="My.Framework" version="[1.0.0]"/>
</dependencies>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果我尝试安装,说另一个My.Framework.EF带有版本的软件包,1.0.1并且对My.Framework1.0.1 的显式依赖Visual Studio只会安装My.Framework两次 …
我创建了这个包,我在项目中需要它但无法安装它,出现此错误:
无法安装包'Mshwf.NiceLinq 1.0.9'.您正在尝试将此软件包安装到以".NETFramework,Version = v4.5"为目标的项目中,但该软件包不包含与该框架兼容的任何程序集引用或内容文件.有关更多信息,请与软件包作者联系
我不知道为什么会发生这种情况,在另一个项目(Console)中我将框架更改为4.6和其他版本并且它不是问题,但这只发生在这个项目(MVC和Web API)中:
这是nuspec文件:
<?xml version="1.0"?>
<package >
<metadata>
<id>Mshwf.NiceLinq</id>
<version>1.0.9</version>
<title>Nice LINQ</title>
<authors>MShawaf</authors>
<owners>Mshawaf</owners>
<projectUrl>https://github.com/mshwf/NiceLinq</projectUrl>
<iconUrl>https://raw.githubusercontent.com/mshwf/NiceLinq/master/logo.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>See it as: WHERE ID IN (1, 2, 3, 7, 9, 22, 30, 101)</description>
<releaseNotes>Minor changes.</releaseNotes>
<copyright>Copyright 2016</copyright>
<tags>LINQ IEnumerable Where Contains Search Filter</tags>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud) 我们有很多项目的解决方案,以及这些项目之间或多或少复杂的依赖图.现在每个项目都应该成为自己的nuget包,nuget包的依赖图应该反映项目的内容.
我有两个问题:
我正在尝试将一堆特定文件夹中的文件复制到nuget包的根目录中.这是它在我的nuspec文件中的样子:
<files>
<file src="dist/product1/**/*.*" />
</files>
Run Code Online (Sandbox Code Playgroud)
我想将dist/product1下的文件复制到nuget包的根目录,而是将所有文件转到nuget文件中的dist/product1文件夹,这意味着它保留了文件夹结构.我尝试了很多变化.有任何想法吗?
我正在尝试从 VS 2017 项目创建一个 NuGet 包,其中包含对第 3 方 DLL (Kendo.mvc.dll) 的引用。无论我如何尝试,我都无法nuget pack自动将该 DLL 包含在 NuGet 包的 lib 文件夹中。
我最初.nuspec使用命令从命令行创建了该文件nuget spec [project's name and path].csproj。然后我调整了该文件的设置,生成了这个 .nuspec 文件:
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>our names</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>the description</description>
<releaseNotes>First release</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>entity-framework-6 mvc5</tags>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)
然后我用来nuget pack创建包,结果是这样的:
根据我在文档(MS Docs - 创建 NuGet 包)中读到的内容,我期望nuget pack自动将项目中引用的任何非 nuget 来源的 DLL 包含在包中,但这并没有发生?
我尝试了以下方法,看看是否有任何区别,但都无济于事:
lib文件夹添加到项目的根目录并将 DLL 放入其中(并尝试更改“生成操作”和“复制到输出目录”设置)。这会在 NuGet …我为互操作库创建了一个nuget包.使用此软件包时,Nuget会自动将"嵌入互操作类型"设置为"True".但是,在我的项目中,这应该是"假的".在Nuget中是否有办法表明互操作类型不会被嵌入?
我\xc2\xb4ve 发现有一种方法可以在 nuget.org ( https://devblogs.microsoft.com/nuget/deprecating-packages-on-nuget-org/ ) 上将包标记为已弃用。
\n不幸的是,我没有将我的包推送到 nuget.org,而是推送到内部文件存储库。所以我的问题是:\n有没有办法将本地包标记为已弃用(例如,通过编辑 nuspec 定义或将文件放入我的文件夹结构中?
\n