标签: nuget-package

Nuget:更改包目录路径和名称

是否可以更改创建的nuget包目录的名称和路径?

我当前的文件夹结构是这样的:

+ SRC

++ PROJECT1

++ Project2的

++包

我想要一个像这样的文件夹结构:

+ Lib(包)

+ SRC

++ PROJECT1

++ Project2的

directory-structure nuget nuget-package

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

在Linux上构建面向.NET Framework的NuGet包

我想创建一个NuGet包,可以同时和明确的目标两者的.NET Framework 4.6.2和.Net标准1.5.这是VS 2017的缩写.csproj文件:

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

  <PropertyGroup>
    <TargetFrameworks>net462;netstandard1.5</TargetFrameworks>
    ...
  </PropertyGroup>

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

当我从本地Windows机器执行dotnet构建和打包命令时,NuGet包的创建完全符合预期.

但是,当我尝试在Linux上执行相同的dotnet命令时,我收到以下错误:

/opt/dotnet/sdk/1.0.4/Microsoft.Common.CurrentVersion.targets(1111,5):错误MSB3644:找不到框架".NETFramework,Version = v4.6.2"的引用程序集.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

然后我突然意识到Linux盒子上没有任何常规的.NET Framework程序集(更不用说了.因此,似乎我将无法使用Linux来构建我的NuGet包.我搜索了一下" Targeting Pack",但它仅适用于Windows.

冒着听起来天真的风险,是否有人在Linux上成功构建可以针对.NET Framework的NuGet包?

.net linux nuget-package .net-core visual-studio-2017

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

NuGet可以编辑配置文件还是只添加它?

我一直在为我公司制作一个NuGet包,其中一个要求是能够更新我们的一些配置文件.

我知道可以添加到配置文件,但是可以编辑一个吗?

例:

<add name="conn" connectionString="Data Source=.\;Initial Catalog=DB;Integrated Security=True" />
Run Code Online (Sandbox Code Playgroud)

改为以下

<add name="conn" connectionString="Data Source=.\;Initial Catalog=DB;User ID=ex;Password=example" />
Run Code Online (Sandbox Code Playgroud)

nuget nuget-package

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

没事做。指定的项目均不包含要还原的包

我在 dot net 中有一个 Web 应用程序以及其他项目。当我打开 .sln 文件并发布 Web 项目时,它确实如此。但是,当我尝试使用命令行和 .csproj 发布 Web 项目时,它会出错。“无事可做。指定的项目都不包含要恢复的包。”

.net asp.net nuget-package dotnet-restore

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

使用Nuget包装源代码

我已经成功创建了一个Nuget包,其中包含已编译的DLL和未编译的内容,如图像,样式等.

已编译控制器,帮助程序,资源和其他代码.当只需要编译的DLL和公共资源时,这个包对于分发很有用,但是我也希望有一个包含所有内容的完整源代码的包.

我读了命令行参考但没有找到这样的选项(可能已经错过了它).

如何打包源文件(.cs)?

asp.net-mvc nuget nuget-package

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

为具有多个项目的解决方案创建nuget包

我们目前正在构建包含多个项目的解决方案.

我们有这样的事情:

- Common
  - Logging
     - Logging.NLog
- Threading
Run Code Online (Sandbox Code Playgroud)

所以Logging.NLog依赖于Logging,Logging on Common等.

当我们打包Logging.NLog时,我希望nuget能够发现Loggin和Common dependecies.

此刻,我用Common创建了一个包,然后在Logging中我安装了包Common

install-package Common
Run Code Online (Sandbox Code Playgroud)

但每当我对Common进行修改时,我都必须更新包,它们是由我们的连续集成系统(Hudson)创建的,所以当我们开发时它非常烦人.

我想简单地有一个项目参考(添加引用 - >项目...),并且nuget无论如何都会发现依赖项.

有没有办法实现它?

.net c# dependencies nuget nuget-package

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

无法加载文件或程序集"Microsoft.Practices.EnterpriseLibrary.Common"或其依赖项之一

我搜索谷歌这个,无法找到问题的解决方案.

我的网站引用了引用企业库数据访问组件的DAL(自定义DLL).

我已经添加了企业库NuGet Package Manager,当我尝试构建网站时,会弹出以下编译错误:

错误44无法加载文件或程序集"Microsoft.Practices.EnterpriseLibrary.Common"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配

我已经尝试Copy Local = True在DAL中设置Enterprise Library dlls并且dll被转移到网站的Bin目录中DAL dll,但仍然会弹出错误.

任何人都可以指导我这....

c# asp.net enterprise-library nuget nuget-package

16
推荐指数
1
解决办法
6万
查看次数

什么是EnsureNuGetPackageBuildImports目标?

在我的一些csproj文件中,我有这个,但有些不:

  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

究竟是什么,为什么我需要它?没有它,我的其他项目正在恢复他们的包.

我正在使用VS2013和NuGet 2.8.

visual-studio nuget nuget-package visual-studio-2013 nuget-package-restore

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

System.Net.Http NuGet包4.3.0引用在System.Diagnostics.DiagnosticSource ver 4.0.0.0参考上生成System.IO.FileLoadException

问题描述:

共享库"shared.dll"项目引用System.Net.Http NuGet包4.3.0.引用"shared.dll"的应用程序失败

System.IO.FileLoadException

无法加载文件或程序集'System.Diagnostics.DiagnosticSource,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = cc7b13ffcd2ddd51'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

在System.Net.Http.WinHttpHandler.SendAsync(...)

在调查此问题之后,我们针对上述故障找到了以下原因:

  • System.Net.Http v 4.3.0的软件包信息页面声明了对System.Diagnostics.DiagnosticSource v 4.3.0或更高版本的依赖性.从项目中引用System.Net.Http v 4.3.0时,将自动下载此程序包.
  • System.Net.Http v 4.3.0的NuGet包实际上包括System.Net.Http.dll v 4.1.1.0(截至2017年1月8日).
  • System.Diagnostics.DiagnosticSource v 4.3.0的NuGet包实际上包括System.Diagnostics.DiagnosticSource v 4.0.1.0(截至2017年1月8日).
  • System.Net.Http ver 4.1.1.0引用System.Diagnostics.DiagnosticSource v.4.0.0.0 在此输入图像描述
  • System.Diagnostics.DiagnosticSource v.4.0.0.0与v下载的dll v 4.0.1.0不完全匹配.
  • 当强名称库引用的版本不完全匹配时,.NET运行时仍会尝试查找引用的程序集.如果不能:生成库加载异常.另请参阅以下注释

有几种解决方法:

  1. app.config选项:在app.config中为任何 "shared.dll" - 引用应用程序声明兼容版本(我们应该在多大程度上使用?)和绑定重定向.
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
  </dependentAssembly>
</assemblyBinding>
Run Code Online (Sandbox Code Playgroud)
  1. 将System.Diagnostics.DiagnosticSource.dll强制转换为版本4.0.0.0:将对System.Diagnostics.DiagnosticSource v.4.0.0.0的NuGet引用添加到引用System.Net.Http的项目中,以抢占dll版本4.0.1.0的自动下载.此选项无法自动更新NuGet依赖项,但无需部署应用程序配置.

虽然正确的问题解决方案在于修复上述NuGet软件包的不一致性,但是有一种唠叨的感觉.在源处修复时,不需要使用System.Net.Http包消耗代码的解决方法.

问题:

  1. 为什么System.Net.Http v 4.3.0软件包包含不匹配的System.Net.Http.dll v 4.1.1,而有早期版本的软件包4.1.1?
  2. 我们应该继续上面提到的2种解决方法吗?
  3. 哪一个更好?
  4. 或者:这个问题有另一个解决方案吗?
  5. 或者:NuGet包是否有即时更新来修复不一致性?

谢谢.

dll system.net fileloadexception nuget-package .net-4.6.2

16
推荐指数
2
解决办法
4724
查看次数

package.config更新不会更新引用

我有多个项目引用相同的NuGet包.当我得到最新的代码时,我意识到其中一个项目有一个更新的package.config,并且还更新了对该包提供的Dll的引用.

现在,我还在其他项目上更新了package.config,希望一旦我对NuGet引擎进行升级,就会看到并获取新的DLL.好吧,它没有发生.在那之后,我尝试了一些事情,但没有一个工作:

  1. 删除旧版本的DLL,然后执行还原包
  2. 删除packages文件夹,重新启动我的VS 2015并恢复软件包

另外,有趣的是,当我去管理Nuget Packages并查看我需要新DLL的包时,它表明它已经是新版本,我不需要升级它.

有什么方法可以让NuGet引擎升级这些包吗?

c# dll nuget nuget-package nuget-package-restore

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