4

由于 .NET 不支持 dll.config 并且在创建 nuget 包时 dll.config 不是包的一部分。

有没有办法让我将 dll.config 作为 nuget 包的一部分?如果有人使用我的 nuget 包,他们应该在其放置位置同时获得 *.dll 和 *.dll.config 文件

如果可能的话,想要一些建议。

4

4 回答 4

2

如果您使用的是 SDK 样式的项目,并假设您之前已将应用程序配置文件添加到项目 ( App.Config),则只需将以下内容添加到您的.csproj文件中:

<ItemGroup>
  <None Update="App.config">
    <Pack>True</Pack>
    <PackagePath>lib\$(TargetFramework)\$(AssemblyName).dll.config</PackagePath>
  </None>
</ItemGroup>

我最近使用它来在部署包时自动包含程序集绑定重定向。

于 2021-02-02T18:01:05.860 回答
1

已尝试上述要求并能够打包 dll 配置,尝试如下您可以将 dll 配置文件与 dll 文件捆绑在一起,只需使用文件标签即可

<file src="path\to\dllconfigfile\*.*" target="lib\net35" />

单击此处-> 在 nuget 包中包含文件

于 2015-05-29T18:40:17.960 回答
0

什么对我有用:

简而言之:将 .props 和 .targets 文件添加到在使用 nuget 包并将 .config 文件复制到输出目录的项目中执行的 nuget 包中:

我添加了一个<PackageId>.propsand<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 包的buildbuildMultiTargeting文件夹中,例如,将以下内容添加到 .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>

于 2022-01-06T14:07:00.113 回答
0

如果你使用 VS2015,那么试试 Nuget Package Explorer,它有友好的 GUI 界面,并且支持文件删除。你可以把文件放在那里。 在此处输入图像描述

于 2017-02-27T15:39:20.480 回答