与Docker的Asp.Net核心 – 包括重复的“内容”项目

当我想用docker部署我的应用程序时遇到问题。 我正在使用Docker的ASP.Net核心。

这是一个错误消息:

/usr/local/share/dotnet/sdk/1.0.4/Sdks/Microsoft.NET.Sdk/build/Microsoft.NET.Sdk.DefaultItems.targets(188,5):错误:包含重复的“内容”项目。 .NET SDK默认包含项目目录中的“内容”项目。 您可以从项目文件中删除这些项目,或者如果您想明确将它们包含在项目文件中,请将“EnableDefaultContentItems”属性设置为“false”。 有关更多信息,请参阅https://aka.ms/sdkimplicititems 。 重复的项目是:'wwwroot / _version.txt'[/Users/xxxxxx/Projects/api-test/TestApi/TestApi.csproj]

这是我的csproj

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp1.1.1</TargetFramework> <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> <UserSecretsId>0a7aa24d-009c-4d0b-b0fd-e8be397b0784</UserSecretsId> </PropertyGroup> <ItemGroup> <PackageReference Include="AutoMapper" Version="6.0.2" /> <PackageReference Include="CoreCompat.System.Drawing" Version="1.0.0-beta006" /> <PackageReference Include="Google.Cloud.Storage.V1" Version="1.1.0-beta01" /> <PackageReference Include="HtmlAgilityPack.NetCore" Version="1.5.0.1" /> <PackageReference Include="MailKit" Version="1.16.1" /> <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Version="1.1.3" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="1.1.0-beta2" /> <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.2" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.1" /> <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" /> <PackageReference Include="MySql.Data.EntityFrameworkCore" Version="7.0.7-m61" /> <PackageReference Include="RazorLight" Version="1.1.0" /> <PackageReference Include="RazorLight.MVC" Version="1.0.4" /> <PackageReference Include="Serilog" Version="2.5.0-dev-00817" /> <PackageReference Include="Serilog.Extensions.Logging" Version="1.4.1-dev-10155" /> <PackageReference Include="Serilog.Extensions.Logging.File" Version="1.0.1" /> <PackageReference Include="Serilog.Sinks.Console" Version="2.2.0-dev-00721" /> <PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0" /> <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="1.0.0" /> <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="1.0.0" /> <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="1.0.0" /> <PackageReference Include="WkWrap.Core" Version="1.0.2" /> <PackageReference Include="ZXing.Net" Version="0.15.0" /> </ItemGroup> <ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" /> </ItemGroup> <ItemGroup> <Folder Include="SQL\" /> <Content Include="wwwroot\_version.txt"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Content> </ItemGroup> </Project> 

我认为问题是与目前在服务器上的_version.txt文件(我可以说,因为我没有访问),它试图复制它。

你愿意帮我吗?

.NET SDK默认包含项目目录中的Content项目,因此您的项目中已经存在wwwroot\_version.txt 。 您的项目文件然后尝试再次添加,这会导致错误。

您可以使用“ Update而不是“ Include来使现有内容项目得到更新,而不是将其包含两次。

所以,你只需要改变

 <Content Include="wwwroot\_version.txt"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Content> 

 <Content Update="wwwroot\_version.txt"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Content>