由于 .NET 不支持 dll.config 并且在创建 nuget 包时 dll.config 不是包的一部分。
有没有办法让我将 dll.config 作为 nuget 包的一部分?如果有人使用我的 nuget 包,他们应该在其放置位置同时获得 *.dll 和 *.dll.config 文件
如果可能的话,想要一些建议。
由于 .NET 不支持 dll.config 并且在创建 nuget 包时 dll.config 不是包的一部分。
有没有办法让我将 dll.config 作为 nuget 包的一部分?如果有人使用我的 nuget 包,他们应该在其放置位置同时获得 *.dll 和 *.dll.config 文件
如果可能的话,想要一些建议。
如果您使用的是 SDK 样式的项目,并假设您之前已将应用程序配置文件添加到项目 ( App.Config
),则只需将以下内容添加到您的.csproj
文件中:
<ItemGroup>
<None Update="App.config">
<Pack>True</Pack>
<PackagePath>lib\$(TargetFramework)\$(AssemblyName).dll.config</PackagePath>
</None>
</ItemGroup>
我最近使用它来在部署包时自动包含程序集绑定重定向。
已尝试上述要求并能够打包 dll 配置,尝试如下您可以将 dll 配置文件与 dll 文件捆绑在一起,只需使用文件标签即可
<file src="path\to\dllconfigfile\*.*" target="lib\net35" />
什么对我有用:
简而言之:将 .props 和 .targets 文件添加到在使用 nuget 包并将 .config 文件复制到输出目录的项目中执行的 nuget 包中:
我添加了一个<PackageId>.props
and<PackageId>.targets
文件(替换<PackageId>
为包的真实名称):
<PackageId>.props
:
<Project>
<ItemGroup>
<ConfigFiles Include="$(MSBuildThisFileDirectory)../contentFiles/any/any/<PackageId>.config" />
</ItemGroup>
</Project>
<PackageId>.targets
:
<Project>
<Target Name="CopyConfigFiles" BeforeTargets="Build" Condition="!$(TargetFramework.StartsWith('netstandard'))">
<Copy SourceFiles="@(ConfigFiles)" DestinationFolder="$(TargetDir)" />
</Target>
</Project>
然后将 .props 和 .targets 文件添加到 nuget 包的build
和buildMultiTargeting
文件夹中,例如,将以下内容添加到 .csproj 文件中:
<ItemGroup>
<None Include="App.config" Pack="true"
PackagePath="contentFiles\any\any\$(AssemblyTitle).dll.config" />
</ItemGroup>
<Target Name="CollectRuntimeOutputs" BeforeTargets="_GetPackageFiles">
<ItemGroup>
<None Include="$(PackageId).props" Pack="true" PackagePath="build" />
<None Include="$(PackageId).props" Pack="true" PackagePath="buildMultiTargeting" />
<None Include="$(PackageId).targets" Pack="true" PackagePath="build" />
<None Include="$(PackageId).targets" Pack="true" PackagePath="buildMultiTargeting" />
</ItemGroup>
</Target>