可以避免添加nuget包引用,而倾向于使用汇编引用。依赖项?

问题描述 投票:0回答:1

有没有一种方法可以避免使用nuget包引用来简化开发人员机器上的开发?

我们目前正将我们的“ shared”解决方案中的某些项目移至new csproj文件结构(使用<Project Sdk="Microsoft.NET.Sdk">)并使用<TargetFramework>netstandard2.0</TargetFramework>

这样做,我们必须包含<PackageReference Include="System.Text.Encodings.Web" Version="4.7.0" />并在shared解决方案的项目“ S”中更改一些代码。

在另一个解决方案后端中,我们有多个项目。他们中的一些人通过使用对S.dll的程序集引用来引用项目S的程序集,如下所示:

<Reference Include="ournamespace.S">
   <HintPath>..\..\artifacts\Shared\ournamespace.S\ournamespace.S.dll</HintPath>
</Reference>

[当我们建造时,每个作品都很好。但是,从后端解决方案运行我们的Web应用程序W时,会出现以下异常:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Text.Encodings.Web, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.

[Before]在使用.netstandard2.0(我们使用.net framework 4.7.2)之前和在切换软件包之前,已经将shared项目迁移到“新SDK”项目文件格式。对System.Text.Encodings.Web的引用(我们正在使用<PackageReference Include="AntiXSS" Version="4.3.0" />),我们没有收到任何错误。

我能想到的唯一方法是,我们需要从S.dll的程序集引用切换为使用nuget-获取S依赖项。

然而,对于我们的shared解决方案项目使用nuget软件包并在backend项目中进行开发,将成为一场噩梦,因为我们需要在S]的每次更改上创建一个新的nuget软件包(并发布)。 ,并且需要一直增加backend项目中软件包引用中的版本号。同样,这将变得非常不切实际,因为我们的开发人员也使用了各种git功能分支(考虑版本控制冲突;必须发布未完成的软件包,并可能使用版本后缀“ alpha _” + {branchName}来区分此版本的来源) 。

如何在localhost上进行开发?是否有一种避免nuget的方法(但可以正确解决其依赖项!)?

我已经读过关于在csproj文件中通过使用条件将nuget包引用用于CI构建的本地开发的程序集引用(但是这在VS2017中也不能很好地工作;这也不能解决我们的依赖问题。上面写在本地主机上的问题)

还有什么其他可能性?关于如何处理此问题,是否有最佳方法

提前感谢!

P.S。我不想通过使用包引用在每个引用S的项目中包括S的依赖项。这不是解决方案,当S可能由于任何原因而获得新的依赖关系时,就会变得麻烦。

c# .net dependencies nuget .net-assembly
1个回答
0
投票
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

解决了我的问题(有关详细信息,请参见How to get .NET Core projects to copy NuGet references to build output?

© www.soinside.com 2019 - 2024. All rights reserved.