标签: nuget-spec

我怎样才能使 dll.config 成为 Nuget 包的一部分

由于 .NET 不支持 dll.config,并且在创建 nuget 包时 dll.config 不是包的一部分。

有没有办法可以将 dll.config 作为 nuget 包的一部分?如果有人使用我的 nuget 包,他们应该在其放置位置获取 *.dll 和 *.dll.config 文件

如果可能的话希望得到一些建议。

.net c# nuget nuget-spec

5
推荐指数
1
解决办法
3424
查看次数

在nuspec依赖项中指定源

我有一个本地的NuGet饲料.此Feed包含依赖项,该依赖项位于nuget.org.

这是在我的nuspec文件中:

<dependencies>
  <dependency id="log4net" version="[1.2.10]" />
</dependencies>
Run Code Online (Sandbox Code Playgroud)

如何指定NuGet必须在nuget.org中查找此依赖项?我目前收到:

Install-Package:无法解析依赖关系'log4net(= 1.2.10)'.

当我通过Visual Studio中的程序包管理器控制台执行安装程序包时.

nuget nuget-spec

5
推荐指数
1
解决办法
1038
查看次数

Nuget 包 - 引用的程序集未包含在项目引用中

在进入问题之前,让我快速说明一下我的目标:

我有一个模板项目,用于我构建的每个网站,其中包括基类、公共页面(例如联系我们)、有用的实用程序(异常日志记录)等。我想让这个模板可重用和可更新。以前我使用的是 Visual Studio 项目模板,但在引用我需要的所有程序集时遇到问题,所以我转向了 Nuget。我的印象是这会更容易,并且还会为我提供额外的好处。

问题:

我不知道如何创建一个 nuget 包,该包将包含包中的所有引用(解决方案中的其他项目和我本地计算机上的 dll),并且还使它们成为安装此模板的子项目中的依赖项。

这是我已经走了多远:

一种。在项目的 nuspec 文件中,我有以下内容:

<references>
  <reference file="AjaxControlToolkit.dll" /> <!-- nuget dependency -->
  <reference file="BjxContacts.Shared.dll" /> <!-- project dependency -->
  <reference file="SomeExample.exe" /> <!-- exe local file dependency -->
  <reference file="SomeOther.dll" />  <!-- dll local file dependency -->
</references>
<files>
    <file src="bin\*.pdb" target="lib" /> 
    <file src="bin\*.dll" target="lib"/>
    <file src="bin\*.exe" target="lib"/>
    <file src="bin\*.xml" target="lib"/>
</files>
Run Code Online (Sandbox Code Playgroud)

湾 当我运行 pack 命令时,我使用这个:nuget pack {projectname}.csproj - IncludeReferencedProjects -Symbols

C。输出是两个独立的项目,一个带有 .symbols,一个没有,在 Package Explorer 中看起来像这样:

两个项目: 在此处输入图片说明

符号包: …

dependency-management visual-studio nuget nuget-package nuget-spec

5
推荐指数
1
解决办法
8730
查看次数

在nuget中定位多个框架的最简单方法?

我创建了一个使用:泛型,扩展方法和Func委托的库. Funcdelegate是库中.NET(版本3.5)的最新功能.当我将它发布到nuget时,该项目的目标是.NET版本4.5.2,但当我尝试将其安装到目标版本为4.5的项目时,它失败了.

如何确保软件包将安装在任何面向.NET 3.5及更高版本的项目上,如果我将库中的目标框架更改为3.5,或者我应该使用目录约定,并为每个框架创建单独的dll,在此处说明:

支持多个.NET框架版本

.net nuget nuget-package nuget-spec

5
推荐指数
1
解决办法
2174
查看次数

如何在构建使用包的 C# 代码期间从 NuGet 包复制文本文件?

如何复制与 NuGet 包中的 DLL 一起包含的文本文件?

当我在另一个解决方案中使用我的自定义 NuGet 包时(c:\dev\对于这个例子),其中的结果文件结构c:\dev\package\projectId\lib\netstandard2.0\有许多 DLL 和一个文本文件,比如file.txt. 在构建解决方案时,所有 DLL 都被复制,但文本文件被留下。

.nuspec文件中,我最初将文件包含在<files><file src="foo\file.txt" target="lib\netstandard2.0"/></files>. 该file.txt恢复的NuGet包时包两端向上文件夹,但它不会复制到构建目录。

尝试 1:我尝试contentFiles在 nuspec 文件中使用该属性,因为 nuspec参考多次指向那里。我得到了nuget.exe pack使用这个新属性的命令(即没有语法错误),但是内容 ( file.txt) 的处理方式没有变化。

尝试 2:我尝试使用projectId.targets文件。这使用Target具有ItemGroup包含文件的 。然后,我尝试使用一个Copy事件,将目标文件夹指向为$(OutputPath).

将包中包含的文件复制到构建目录似乎非常困难,必须深入研究 MSBuild 事件等。

我在这里不知所措,欢迎任何指点。

编辑#1:

根据以下建议,我尝试将此部分添加到元数据中:

<contentFiles> <files include="any\any\file.txt" buildAction="EmbeddedResource" /> </contentFiles>

这适用于一个小的测试用例。在file.txt显示了很好的Visual Studio和build目录。奇怪的是,它在我的主项目中使用完全相同的语法不起作用(我在两者中都使用 .NET Core 2.0)。此外,在 NuGet 包资源管理器中,它单独显示在包内容中。但是当我在 下添加一些东西时 …

c# msbuild nuget nuget-package nuget-spec

5
推荐指数
1
解决办法
1975
查看次数

无法使用 dotnet CLI 和 nuspec 文件打包 NuGet 包

我有几个项目要从 .NET Framework 4.7 迁移到 .NET Standard 2.0。因此,我尝试使用该dotnet pack命令创建我的 NuGet 包,同时将我的nuspec文件与令牌一起使用。我有几个为我生成版本号的自定义构建脚本。我生成的文件不是版本控制的一部分,但nuspec文件是为什么我想尝试找到一种让令牌工作的方法,否则我会被困在编写新脚本中。

我做的第一件事是GenerateAssemblyInfo在项目文件中将 设置为 false。在我最简单的项目中,csproj文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
     <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
     <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

然后AssemblyInfo.cs,我将生成一个作为构建过程的一部分。在我编译项目之前,该文件如下所示:

using System.Reflection;
using System.Runtime.InteropServices;

[assembly: AssemblyCompany("Company Name")]
[assembly: AssemblyCopyright("Copyright © 2019")]

#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif

[assembly: AssemblyTitle("The Title")]
[assembly: AssemblyDescription("The Description")]
[assembly: AssemblyProduct("The Product")]
[assembly: ComVisible(false)]
[assembly: Guid("48d6ef54-a8fb-4876-8a9a-2fb8e8cd27e7")]
[assembly: AssemblyVersion("6.0.0.0")]
[assembly: AssemblyFileVersion("6.0.0.0")]
Run Code Online (Sandbox Code Playgroud)

然后我有一个.nuspec用于创建 NuGet 包的文件,如下所示:

<?xml version="1.0"?>
<package >
  <metadata> …
Run Code Online (Sandbox Code Playgroud)

c# nuget-spec .net-core

5
推荐指数
1
解决办法
3592
查看次数

NuGet v4 contentFiles 没有被复制到输出

我在使用 NuGet v4 CLI 将文件复制到输出时遇到了问题。

我的目录结构如下所示:

repo
repo\CodeAnalyzer.nuspec
repo\CodeAnalyzer.props
repo\contentFiles\any\any\StyleCop.ruleset
Run Code Online (Sandbox Code Playgroud)

这是我的 CodeAnalyzer.props 文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PackageName>CodeAnalyzer</PackageName>
    <PackageVersion>0.1.0</PackageVersion>
  </PropertyGroup>
  <PropertyGroup>
      <CodeAnalysisRuleSet>StyleCop.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

和 CodeAnalyzer.nuspec 文件:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>CodeAnalyzer</id>
    <description>Provides standard code analyzer tooling and customisation.</description>
    <authors>Me</authors>
    <version>0.1.0</version>
    <dependencies>
      <dependency id="StyleCop.Analyzers" version="1.1.118" />
    </dependencies>
    <contentFiles>
      <files include="any/any/*" buildAction="Content" copyToOutput="true" flatten="false" />
    </contentFiles>
  </metadata>
  <files>
    <file src="contentFiles\any\any\StyleCop.ruleset" target="contentFiles" />
    <file src="CodeAnalyzer.props" target="build" />
  </files>
</package>
Run Code Online (Sandbox Code Playgroud)

在 CLI 上,我使用以下方法打包:

.\nuget.exe pack .\CodeAnalyzer.nuspec

在生成的 .nupkg 中,有一个包含 …

nuget nuget-package nuget-spec nuget-package-restore

5
推荐指数
2
解决办法
3716
查看次数

使用.targets文件使用NuGet设置文件属性

我正在构建一个要作为NuGet包安装的项目,我想设置SpecFlow功能文件的属性(因为它是最新的SpecFlow,不应该为这些功能生成代码隐藏文件.)

要实现选择文件的效果,打开它的属性窗格并设置几个值,我已经设置了我的项目结构:

\MyProject
  \build
    MyProject.targets
    \Framework <the folder containing the file I want to affect>
      FrameworkTests.feature <the file I want to affect>
  \Framework
    FrameworkTests.feature <the original location of the file I want to affect>
Run Code Online (Sandbox Code Playgroud)

我的.nuspec是这样的:

<?xml version="1.0"?>
<package >
  <metadata minClientVersion="2.5">
    <id>$id$</id>
    <version>$version$</version>
    ...
  </metadata>
  <files>
    <file src="build\MyProject.targets" target="build\MyProject.targets" />
    <file src="build\FrameworkTests\FrameworkTests.feature" target="build\Framework\FrameworkTests.feature" />
  </files>
</package>
Run Code Online (Sandbox Code Playgroud)

我的.targets文件是这样的:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)FrameworkTests\FrameworkTests.feature">
      <Link>FrameworkTests.feature</Link>
      <CopyToOutputDirectory>Copy if newer</CopyToOutputDirectory>
      <CustomToolNamespace></CustomToolNamespace>
    </None>
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

我没有看到在安装软件包时将FrameworkTests.feature文件复制到项目中.我需要改变什么?

nuget nuget-spec nuget-package-restore visual-studio-2015

3
推荐指数
1
解决办法
6293
查看次数

如何在nuget包中包含单独添加的system.configuration dll

我正在创建我已经单独demo.csproj添加system.configuration到这个项目中的nuget 包,

我知道我可以system.configuration.dll通过在file 中使用添加<dependencies>标签或 y<file>标签 将其添加到我的 nuget 中.nuspec,但是有没有其他类似的方法copy local=true来代替使用<dependencies>或 '' 标签?

c# nuget nuget-package nugetgallery nuget-spec

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

Nuget 阻止在解决方案中生成包文件夹

我有一个包含两个项目的解决方案。

/Solution
    .sln
    .nuget.config
    /ProjectA
        .csproj
        .nuspec
    /ProejctB
        .csproj
        .nuspec
Run Code Online (Sandbox Code Playgroud)

当我通过 nuget 添加依赖项 ProjectA 时。

在此处输入图片说明

项目结构变成这样:

/Solution
    .sln
    nuget.config
    /packages
         .nupkg
         /lib
             .dll
    /ProjectA
        .csproj
        .nuspec
        packages.config
    /ProejctB
        .csproj
        .nuspec
Run Code Online (Sandbox Code Playgroud)

基本上,Visual Studio 创建一个 packages.config 文件并将依赖项放在那里。并且,依赖项被添加到/packages文件夹中。此外,.csproj内容也会发生变化。(添加了一个引用,其中包含/packages文件夹内 dll 的相对路径。)

我有两个问题。

1- 在 nuget.config 文件中,我放置了以下行。所以我希望 nuget 将使用默认的本地存储库,而不是/packages在解决方案中创建一个文件夹。如何防止在解决方案中创建 /packages 文件夹。相反,我想使用"%userprofile%\.nuget\packages".

<add key="globalPackagesFolder" value="%userprofile%\.nuget\packages" />
Run Code Online (Sandbox Code Playgroud)

2- 当我将依赖项添加为 nuget 包时。静止.csprj文件被更改,并在那里添加了 dll 的相关路径作为相对路径的参考。可以吗?自动生成还packages.config不够。为什么还要更新此文件。

c# nuget nuget-spec visual-studio-2015

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

如何打包 .NET Standard NuGet 包而不重建它?

如何打包在 CSProj 文件中具有 Nuget 规范的 .NET Standard NuGet 包而不重建它?

\n\n

我有一些自动化需要在构建步骤和打包步骤之间运行,这些自动化与构建过程本身分离,并且不应该是与任何项目相关的构建事件。

\n\n

当我尝试使用 nuget CLI 时,它失败并显示以下内容:

\n\n

Error NU5012: Unable to find \'bin\\Debug\\LibraryNuGetExample\\bin\\Debug\\\'. Make sure the project has been built.

\n\n

这没有任何意义,因为那不是构建输出文件夹!正确的输出文件夹是bin\\Debug\\**——我不明白为什么它要寻找我没有在任何地方指定的目录映射。

\n\n

我尝试使用这个,但它重建了,我绝对不想要;只是nuget pack

\n\n

MSBuild LibraryNuGetExample.csproj /t:pack

\n\n

所以我要么需要知道如何,

\n\n
    \n
  1. 使用 MSBuid 仅打包而不构建具有某些当前未知选项的包
  2. \n
  3. 使用具有当前未知选项的 NuGet CLI 来打包它
  4. \n
  5. 我还没有考虑过其他一些聪明的事情:)
  6. \n
\n\n

LibraryNuGetExample.csproj

\n\n
<Project Sdk="Microsoft.NET.Sdk">\n\n  <PropertyGroup>\n    <TargetFrameworks>uap10.0;net45</TargetFrameworks>\n    <PackageId>LibraryForNuGetExample</PackageId>\n    <Authors>user name</Authors>\n    <Company>ACME</Company>\n    <Product>Library For NuGet Example</Product>\n    <Description>A test package to test …
Run Code Online (Sandbox Code Playgroud)

nuget nuget-package nuget-spec .net-standard

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