我正在尝试使用csproj文件创建一个nuget。我的文件被复制,但当另一个项目导入nuget包时,我的log4net.config(和其他文件)被视为链接。这些文件也不会复制到构建目标目录。 (参见下面屏幕截图中的蓝色图标)
我的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 - 默认情况下被复制到outbut目录。
答案 0 :(得分:1)
我需要做什么才能将log4net.config:1 - 视为链接文件
这是设计的。 contentFiles
应该作为链接添加。不支持将文件复制到项目的源目录中,对于经典项目来说,这是一种沮丧的做法。
检查Martin的回答here:
这是设计的。 NuGet包不再需要修改项目的源,而只是添加到其构建的输出或构建过程(除了.NET库)。用于向项目添加源的内容文件夹仅继续支持基于packages.config的项目,因为它对现有项目来说是一个重大变化,但使用project.json或PackageReference(VS 2017)的项目会获得新的行为。
现在,contentFiles
部分将为这些文件生成的msbuild项控制到obj\projectname.csproj.nuget.g.props
文件中。
2 - 默认情况下被复制到outbut目录。
您可以为.nuspec文件中的copyToOutput="true"
设置log4net.config
:
<?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 Demystified和this thread了解详情。