标签: nuget-spec

将NuGet包中的本机文件添加到项目输出目录

我正在尝试为.Net程序集创建NuGet程序包,它会对原生的win32 dll进行pinvoke.我需要将程序集和本机dll打包,并将程序集添加到项目引用中(此部分没有问题),并且应将本机dll复制到项目输出目录或其他相关目录中.

我的问题是:

  1. 如何在没有visual studio尝试将其添加到引用列表中的情况下打包本机dll?
  2. 我是否必须编写install.ps1来复制本机dll?如果是这样,我如何访问包内容进行复制呢?

nuget nuget-package nuget-spec

112
推荐指数
6
解决办法
5万
查看次数

如何将文件夹添加到nuspec文件

所以我实际上正在尝试将一个网站项目(不是Web应用程序,所以没有csproj文件)打包成一个准备好让Octopus使用的NuGet包,但是我正在一个又一个的砖墙上运行.

我研究过使用OctoPack,但它不支持网站项目只有Web应用程序项目.

我现在正试图找到一种方法将文件夹(在我的情况下是一个网站)添加到Nuget包中,但Nuget不允许通过命令行这样做吗?它还需要一个.csproj文件!

我也尝试过创建NuGet规范文件并将其传递到文件夹但不可能?

目前我可能不得不使用NuGet包浏览器,但我想编写脚本.

我已经看过这个问题,但似乎没有处理我的场景我 可以创建一个没有项目文件的nuget包

那么有谁知道如何通过命令行最好地将文件夹添加到NuGet包!

nuget octopus-deploy nuget-spec

25
推荐指数
1
解决办法
2万
查看次数

自定义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 specnuget 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)

.net c# nuget visual-studio-2012 nuget-spec

22
推荐指数
1
解决办法
684
查看次数

保证相同版本的nuget包

我们有一个框架,在一个解决方案中分成许多单独的项目.我现在想为每个单独的项目创建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两次 …

c# nuget nuget-package visual-studio-2013 nuget-spec

18
推荐指数
2
解决办法
1281
查看次数

无法安装包' - '.您正在尝试将此软件包安装到以".NETFramework,Version = v4.5"为目标的项目中

我创建了这个包,我在项目中需要它但无法安装它,出现此错误:

无法安装包'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-package nuget-spec

15
推荐指数
3
解决办法
4万
查看次数

声明在一个解决方案中相互依赖的nuget包

我们有很多项目的解决方案,以及这些项目之间或多或少复杂的依赖图.现在每个项目都应该成为自己的nuget包,nuget包的依赖图应该反映项目的内容.

我有两个问题:

  1. 是否有可能在保持所有项目在同一解决方案中的同时实现这一目标?如果是这样的话?
  2. 可取的,以保持所有项目在同一个解决方案吗?对此有什么共同/"最佳实践"方法?

nuget nuget-package nuget-spec

13
推荐指数
2
解决办法
1914
查看次数

将文件从子文件夹复制到nuspec中的root

我正在尝试将一堆特定文件夹中的文件复制到nuget包的根目录中.这是它在我的nuspec文件中的样子:

<files>
  <file src="dist/product1/**/*.*" />
</files>
Run Code Online (Sandbox Code Playgroud)

我想将dist/product1下的文件复制到nuget包的根目录,而是将所有文件转到nuget文件中的dist/product1文件夹,这意味着它保留了文件夹结构.我尝试了很多变化.有任何想法吗?

nuget nuget-package nuget-spec

10
推荐指数
1
解决办法
3449
查看次数

将第 3 方 DLL 包含在从 VS csproj 生成的 NuGet 包中

我正在尝试从 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创建包,结果是这样的:

软件包内容显示不包含第 3 方 DLL

根据我在文档(MS Docs - 创建 NuGet 包)中读到的内容,我期望nuget pack自动将项目中引用的任何非 nuget 来源的 DLL 包含在包中,但这并没有发生?

我尝试了以下方法,看看是否有任何区别,但都无济于事:

  • lib文件夹添加到项目的根目录并将 DLL 放入其中(并尝试更改“生成操作”和“复制到输出目录”设置)。这会在 NuGet …

visual-studio nuget nuget-spec

10
推荐指数
2
解决办法
2万
查看次数

防止在nuspec包文件中嵌入互操作类型

我为互操作库创建了一个nuget包.使用此软件包时,Nuget会自动将"嵌入互操作类型"设置为"True".但是,在我的项目中,这应该是"假的".在Nuget中是否有办法表明互操作类型不会被嵌入?

nuget nuget-package nuget-spec

8
推荐指数
1
解决办法
183
查看次数

在本地存储库中将 Nuget-Package 标记为“已弃用”的方法

我\xc2\xb4ve 发现有一种方法可以在 nuget.org ( https://devblogs.microsoft.com/nuget/deprecating-packages-on-nuget-org/ ) 上将包标记为已弃用。

\n

不幸的是,我没有将我的包推送到 nuget.org,而是推送到内部文件存储库。所以我的问题是:\n有没有办法将本地包标记为已弃用(例如,通过编辑 nuspec 定义或将文件放入我的文件夹结构中?

\n

.net nuget nuget-package nuget-server nuget-spec

8
推荐指数
0
解决办法
616
查看次数