由于 .NET 不支持 dll.config,并且在创建 nuget 包时 dll.config 不是包的一部分。
有没有办法可以将 dll.config 作为 nuget 包的一部分?如果有人使用我的 nuget 包,他们应该在其放置位置获取 *.dll 和 *.dll.config 文件
如果可能的话希望得到一些建议。
我有一个本地的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中的程序包管理器控制台执行安装程序包时.
在进入问题之前,让我快速说明一下我的目标:
我有一个模板项目,用于我构建的每个网站,其中包括基类、公共页面(例如联系我们)、有用的实用程序(异常日志记录)等。我想让这个模板可重用和可更新。以前我使用的是 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
我创建了一个使用:泛型,扩展方法和Func委托的库.
Funcdelegate是库中.NET(版本3.5)的最新功能.当我将它发布到nuget时,该项目的目标是.NET版本4.5.2,但当我尝试将其安装到目标版本为4.5的项目时,它失败了.
如何确保软件包将安装在任何面向.NET 3.5及更高版本的项目上,如果我将库中的目标框架更改为3.5,或者我应该使用目录约定,并为每个框架创建单独的dll,在此处说明:
如何复制与 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 包资源管理器中,它单独显示在包内容中。但是当我在 下添加一些东西时 …
我有几个项目要从 .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) 我在使用 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包安装的项目,我想设置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文件复制到项目中.我需要改变什么?
我正在创建我已经单独demo.csproj添加system.configuration到这个项目中的nuget 包,
我知道我可以
system.configuration.dll通过在file 中使用添加<dependencies>标签或 y<file>标签 将其添加到我的 nuget 中.nuspec,但是有没有其他类似的方法copy local=true来代替使用<dependencies>或 '' 标签?
我有一个包含两个项目的解决方案。
/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不够。为什么还要更新此文件。
如何打包在 CSProj 文件中具有 Nuget 规范的 .NET Standard NuGet 包而不重建它?
\n\n我有一些自动化需要在构建步骤和打包步骤之间运行,这些自动化与构建过程本身分离,并且不应该是与任何项目相关的构建事件。
\n\n当我尝试使用 nuget CLI 时,它失败并显示以下内容:
\n\nError NU5012: Unable to find \'bin\\Debug\\LibraryNuGetExample\\bin\\Debug\\\'. Make sure the project has been built.
这没有任何意义,因为那不是构建输出文件夹!正确的输出文件夹是bin\\Debug\\**——我不明白为什么它要寻找我没有在任何地方指定的目录映射。
我尝试使用这个,但它重建了,我绝对不想要;只是nuget pack:
MSBuild LibraryNuGetExample.csproj /t:pack
所以我要么需要知道如何,
\n\nLibraryNuGetExample.csproj
<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)