我有.NetStandard
库。我将在.NetFramework
和.NetCoreApp
应用程序中使用它。
它使用System.Configuration.ConfigurationManager
软件包来处理配置文件。我需要在安装库的过程中转换这些配置文件。
我发现了两种方法:
tools
文件夹,其中包含install.ps1
文件content
文件夹,其中包含app.config.install.xdt
个文件它们中的任何一个都不起作用-nuget无法运行install.ps1
,nuget不能转换App.config
。
csproj提供了一个代码:
<ItemGroup>
<Content Include="Content\app.config.install.xdt">
<PackagePath>content</PackagePath>
</Content>
</ItemGroup>
Nuget程序包包含此文件...所以我不知道为什么它不起作用。
此问题与.NetStandard
相关吗?我在做什么错了?
答案 0 :(得分:0)
执行ps1脚本和XDT转换都是仅与packages.config but not PackageReference一起使用的功能。 .NET Core(我认为是.NET Standard)项目仅适用于SDK样式的项目,而SDK样式的项目仅支持PackageReference。 Packages.config仅适用于“旧式”项目,也可以使用PackageReference。
Microsoft的ASP.NET Core库处理此差异的方式是,它们不再直接从web.config中读取设置。相反,程序必须注册将修改现有内存中选项对象的回调函数。例如
services.AddMyService(options =>
{
options.setting = newValue;
});
这对您的用户有一些好处。
ASP.NET Core的新模型对每个人都更好,因为程序包作者创建了options对象,并使用默认值预填充了该对象,然后调用用户的委托方法,允许他们更改他们关心的设置。如果程序包作者想更改默认值,则可以在自己的代码中进行更改,然后发布新的程序包,并且不更改该值的用户将获得新的默认值,并且在其代码中明确设置该值的用户将继续使用从他们想要的任何配置存储中获得他们想要的价值。
因此,TL:DR的答案是您无法完成PackageReference项目所要求的工作,但我希望我的回答更长一点,可以使您了解如何重新设计库,从而更好地为软件包作者和软件包提供更好的支持为用户带来更好的体验。