Файлы пакета nuget VS2017 рассматриваются как ссылки, а не как файлы - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь создать nuget, используя файл csproj.Мои файлы скопированы, но мой log4net.config (и другие) обрабатываются как ссылка, когда пакет nuget импортируется другим проектом.Эти файлы также не копируются в целевой каталог при сборке.(см. синий значок на снимке экрана ниже)

log4net as a

Мой проект cs содержит следующий код.

<ItemGroup>
  <Content Include="contentFiles/**/*.*;log4net.config" copyToOutput="true">
    <IncludeInPackage>true</IncludeInPackage>
    <CopyToOutput>true</CopyToOutput>
    <BuildAction>Content</BuildAction>
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

Что мне нужно сделать, чтобы log4net.config:

1 - не обрабатывался как связанный файл

2 - копировался в выходной каталогпо умолчанию.

1 Ответ

0 голосов
/ 05 июня 2018

Что мне нужно сделать, чтобы log4net.config: 1 - не обрабатывался как связанный файл

Это сделано специально.contentFiles предполагается добавить как ссылку.Копирование файлов в исходный каталог проекта не поддерживается и не рекомендуется для классических проектов.

Проверьте ответ Мартина здесь :

Это сделано специально. Пакеты NuGet больше не должны изменять исходный код проекта, а только добавляют его к встроенному выходу или процессу сборки (в дополнение к библиотекам .NET). Папка содержимого для добавления исходных текстов в проект по-прежнему остаетсяподдерживается для проектов на основе packages.config, поскольку это будет серьезное изменение для существующих проектов, но проекты, использующие project.json или PackageReference (VS 2017), получат новое поведение.

Теперь, contentFilessection управляет элементами msbuild, сгенерированными для этих файлов в файл obj\projectname.csproj.nuget.g.props.

2 - по умолчанию копируется в каталог outbut.

Вы можете установить copyToOutput="true" для log4net.config в файле .nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>xxxx</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package Description</description>
    <contentFiles>
      <files include="any/any/Views/log4net.config" buildAction="content" flatten="true" copyToOutput="true"/>
  </metadata>

    <files>
      <file src="contentFiles/any/any/log4net.config" target="contentFiles/any/any/log4net.config" />
    </files>

Вы можете проверить документ NuGet ContentFiles Демистифицировано и в этой теме для получения более подробной информации.

...