Accord.Dll.Config 的目的
Purpose of Accord.Dll.Config
我在项目的 csproj 中注意到了这一点:
<ItemGroup Condition="'$(MSBuildThisFileDirectory)' != '' And HasTrailingSlash('$(MSBuildThisFileDirectory)')">
<Content Include="$(MSBuildThisFileDirectory)..\packages\Accord.3.5.0\build\Accord.dll.config">
<Link>Accord.dll.config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
它导致构建失败,因为使用 dotnet restore 恢复时在包目录中找不到配置
Accord.dll.config 在 github 上看起来像这样:
<!-- Mono library mapping mechanism -->
<configuration>
<dllmap dll="ntdll.dll">
<dllentry os="linux,solaris,freebsd" dll="libc.so.6"/>
</dllmap>
</configuration>
我想这意味着如果我不想 运行 我的项目在单声道上,我可以安全地删除它吗?
你的问题的标题是"Purpose of Accord.Dll.Config",鉴于你在问题中复制的内容,目的是将使用"ntdll.dll"的任何P/Invoke映射到"libc.so.6"在 Linux、Solaris 和 FreeBSD 上。因此,一方面,当然,如果您不打算 运行 在这些平台上使用您的应用程序,您可能不需要此文件。
但是,我很困惑为什么它会出现在您的项目中。该包似乎没有修改您的 csproj,因此似乎有人手动将其添加到 csproj。相反,该包包含一个包含相同内容的文件 build/accord.targets
。考虑到您似乎正在使用 packages.config,NuGet 应该修改项目以导入 accord.targets
文件,条件是文件何时存在,以便恢复成功,但还添加一个目标,说明如果该文件在生成时不存在,生成失败并显示一条消息说包尚未恢复。
鉴于您的 csproj 似乎已被手动修改,如果您的项目在源代码管理下,您可以考虑查找谁以这种方式修改了 csproj 并询问他们。但是您使用的是软件包的 3.5.0 版,而 3.6.0 版于 2017 年 7 月 7 日发布,这意味着您的项目可能至少已有 2 年历史,并且可能会忘记编辑 csproj 的原因的详细信息现在。
无论如何,我建议是,从您的 csproj 中删除该项目组。不是因为您没有 运行 单声道,而是因为它一开始就不应该添加到您的项目中。
我在项目的 csproj 中注意到了这一点:
<ItemGroup Condition="'$(MSBuildThisFileDirectory)' != '' And HasTrailingSlash('$(MSBuildThisFileDirectory)')">
<Content Include="$(MSBuildThisFileDirectory)..\packages\Accord.3.5.0\build\Accord.dll.config">
<Link>Accord.dll.config</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
它导致构建失败,因为使用 dotnet restore 恢复时在包目录中找不到配置
Accord.dll.config 在 github 上看起来像这样:
<!-- Mono library mapping mechanism -->
<configuration>
<dllmap dll="ntdll.dll">
<dllentry os="linux,solaris,freebsd" dll="libc.so.6"/>
</dllmap>
</configuration>
我想这意味着如果我不想 运行 我的项目在单声道上,我可以安全地删除它吗?
你的问题的标题是"Purpose of Accord.Dll.Config",鉴于你在问题中复制的内容,目的是将使用"ntdll.dll"的任何P/Invoke映射到"libc.so.6"在 Linux、Solaris 和 FreeBSD 上。因此,一方面,当然,如果您不打算 运行 在这些平台上使用您的应用程序,您可能不需要此文件。
但是,我很困惑为什么它会出现在您的项目中。该包似乎没有修改您的 csproj,因此似乎有人手动将其添加到 csproj。相反,该包包含一个包含相同内容的文件 build/accord.targets
。考虑到您似乎正在使用 packages.config,NuGet 应该修改项目以导入 accord.targets
文件,条件是文件何时存在,以便恢复成功,但还添加一个目标,说明如果该文件在生成时不存在,生成失败并显示一条消息说包尚未恢复。
鉴于您的 csproj 似乎已被手动修改,如果您的项目在源代码管理下,您可以考虑查找谁以这种方式修改了 csproj 并询问他们。但是您使用的是软件包的 3.5.0 版,而 3.6.0 版于 2017 年 7 月 7 日发布,这意味着您的项目可能至少已有 2 年历史,并且可能会忘记编辑 csproj 的原因的详细信息现在。
无论如何,我建议是,从您的 csproj 中删除该项目组。不是因为您没有 运行 单声道,而是因为它一开始就不应该添加到您的项目中。