可以避免添加 nuget 包引用以支持程序集引用,包括。依赖?
Possibility to avoid adding nuget package reference in favor of assembly reference incl. dependencies?
有没有办法避免 nuget 包引用以简化开发人员机器上的开发?
我们目前正准备将“shared”解决方案中的一些项目移动到 new csproj 文件结构(使用 <Project Sdk="Microsoft.NET.Sdk">
) 并使用 <TargetFramework>netstandard2.0</TargetFramework>
.
通过这样做,我们必须包含 <PackageReference Include="System.Text.Encodings.Web" Version="4.7.0" />
并更改我们 shared[=63= 的项目“S”中的一些代码]解决方案。
在另一个解决方案中 backend 我们有多个项目。其中一些通过使用对 S.dll
的程序集引用来引用项目 S 的程序集,如下所示:
<Reference Include="ournamespace.S">
<HintPath>..\..\artifacts\Shared\ournamespace.S\ournamespace.S.dll</HintPath>
</Reference>
当我们构建时,一切正常。然而,当 运行 我们的 Web 应用程序 W 来自 backend 解决方案时,我们得到这个异常:
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.
在使用 .netstandard2.0 (我们使用的是 .net framework 4.7.2),在我们将包引用切换到 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 中也不能很好地工作;这也会上面写在localhost上的依赖问题没有解决我们的问题)
还有哪些可能?有没有最好的方法来处理这个问题?
提前致谢!
P.S。我不想通过使用包引用将 S 的依赖项包含到每个引用 S 的项目中。这不是一个解决方案,并且当 S 可能出于任何原因获得新的依赖项时变得更加麻烦。
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
解决了我的问题(详见)
有没有办法避免 nuget 包引用以简化开发人员机器上的开发?
我们目前正准备将“shared”解决方案中的一些项目移动到 new csproj 文件结构(使用 <Project Sdk="Microsoft.NET.Sdk">
) 并使用 <TargetFramework>netstandard2.0</TargetFramework>
.
通过这样做,我们必须包含 <PackageReference Include="System.Text.Encodings.Web" Version="4.7.0" />
并更改我们 shared[=63= 的项目“S”中的一些代码]解决方案。
在另一个解决方案中 backend 我们有多个项目。其中一些通过使用对 S.dll
的程序集引用来引用项目 S 的程序集,如下所示:
<Reference Include="ournamespace.S">
<HintPath>..\..\artifacts\Shared\ournamespace.S\ournamespace.S.dll</HintPath>
</Reference>
当我们构建时,一切正常。然而,当 运行 我们的 Web 应用程序 W 来自 backend 解决方案时,我们得到这个异常:
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.
在使用 .netstandard2.0 (我们使用的是 .net framework 4.7.2),在我们将包引用切换到 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 中也不能很好地工作;这也会上面写在localhost上的依赖问题没有解决我们的问题)
还有哪些可能?有没有最好的方法来处理这个问题?
提前致谢!
P.S。我不想通过使用包引用将 S 的依赖项包含到每个引用 S 的项目中。这不是一个解决方案,并且当 S 可能出于任何原因获得新的依赖项时变得更加麻烦。
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
解决了我的问题(详见