Назначение Accord.Dll.Config - PullRequest
0 голосов
/ 10 июля 2019

Я заметил это в 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>

Я предполагаю, что это означает, что если я не хочу запускать свой проект на моно, я могу безопасноудалить это?

1 Ответ

1 голос
/ 10 июля 2019

Название вашего вопроса - «Цель Accord.Dll.Config», и с учетом содержания, скопированного в вашем вопросе, цель состоит в том, чтобы сопоставить любой P / Invoke, используя «ntdll.dll», с «libc.so. 6 "в Linux, Solaris и FreeBSD. Так что, с одной стороны, если вы не собираетесь запускать свое приложение на этих платформах, вам, вероятно, не нужен этот файл.

Тем не менее, я запутался, почему это вообще есть в вашем проекте. Похоже, что пакет не изменяет ваш csproj, поэтому кажется, что кто-то вручную добавил его в csproj. Вместо этого пакет содержит файл build/accord.targets, который содержит такое же содержимое. Полагая, что вы, похоже, используете packages.config, NuGet должен был изменить проект, чтобы импортировать файл accord.targets, с условием, указывающим, когда файл существует, так что восстановление завершается успешно, но также добавляя цель, говорящую, что если файл не существует существует при сборке, сбой при сборке с сообщением о том, что пакеты не были восстановлены.

Учитывая, что ваш csproj, по-видимому, был изменен вручную, если ваш проект находится под контролем исходного кода, вы можете рассмотреть вопрос о том, кто таким образом изменил csproj, и спросить их об этом. Но вы используете версию 3.5.0 этого пакета, а версия 3.6.0 была выпущена 7 июля 2017 года. Это означает, что вашему проекту, вероятно, не менее 2 лет, и детали о том, почему был отредактирован csproj, могут быть забыты Теперь.

В любом случае, я предлагаю да, удалить эту группу элементов из вашего csproj. Не потому, что вы не работаете в режиме моно, а потому, что его никогда не следовало добавлять в ваш проект.

...