我有一个.Net Core 2.1 Web应用程序,它使用Angular 6作为前端,是在Visual Studio 2017中开发的。
在Angular资产文件夹中,我还有一个json文件夹,其中包含一个文件:iconClasses.json。发布此内容时,我首先在ClientApp文件夹中使用ng build --prod
构建了角度应用程序。如预期的那样,这会将.json文件移动到dist文件夹:
在我的.csproj中,唯一的项目组是:
<ItemGroup>
<Content Include="ClientApp\dist\**\*" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
<ItemGroup>
<Content Remove="appsettings.Development.json" />
<!--<Content Remove="ClientApp\dist\assets\json\iconClasses.json" />-->
</ItemGroup>
发布此消息会导致以下错误:
包含重复的“内容”项。 .NET SDK包括 默认情况下,项目目录中的“内容”项。你可以 从您的项目文件中删除这些项目,或设置 如果您想将'EnableDefaultContentItems'属性设置为'false' 明确地将它们包含在您的项目文件中。了解更多信息, 参见https://aka.ms/sdkimplicititems。重复的项目是:'ClientApp \ dist \ assets \ json \ iconClasses.json'
取消对明确删除此文件的行的注释,可以继续进行发布,但是将从最终发布的程序包中删除该文件。
将dist / assets / js文件夹中的.js文件与dist / assets / json中的.json文件进行比较,表明它们都是构建操作“内容”和“请勿复制”。将.json文件的构建操作设置为'None'只会像上面那样添加<Content Remove />
,而且:
<ItemGroup>
<None Include="ClientApp\dist\assets\json\iconClasses.json" />
</ItemGroup>
同样,这仅导致.json文件从发布包中删除。
我确实注意到src \ assets \ json \ iconClasses.json文件的构建操作设置为“ Content”,而其他src \ assets文件设置为“ None”,所以我将.json文件设置为“ None”也。但是,这会导致相同的错误,除非dist版本也被明确删除。
将以下内容添加到我的.csproj中的PropertyGroup中,会将.json文件包含在dist / assets / json中,但随后错过了系统所需的其他文件:
<EnableDefaultContentItems>false</EnableDefaultContentItems>
那么,如何将Assets文件夹中的.json文件移至dist asset文件夹?是将EnableDefaultContentItems
设置为false,找出所有丢失的文件并手动添加的唯一方法吗?
答案 0 :(得分:1)
删除此:
fun main() {
run {
val cond = true
val result = cond yes "True!" no "False!"
println("ternary test($cond): $result")
}
run {
val cond = false
val result = cond yes "True!" no "False!"
println("ternary test($cond): $result")
}
}
默认情况下,.NET SDK包含项目目录中的“内容”项。您可以从项目文件中删除这些项目...
默认情况下,.NET Core SDK已包含此文件夹(以及ClientApp /中的所有其他文件) 相反,您应该尝试从已发布的位置删除src文件夹(以及您不想发布的所有其他内容,例如e2e等),例如:
<ItemGroup>
<Content Include="ClientApp\dist\**\*" CopyToPublishDirectory="PreserveNewest"/>
</ItemGroup>
答案 1 :(得分:0)
解决方案:
从此更改dist文件夹的添加:
<ItemGroup>
<Content Include="ClientApp\dist\**\*" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
对此:
<ItemGroup>
<None Include="ClientApp\dist\**" CopyToPublishDirectory="PreserveNewest" />
</ItemGroup>
即将其从Content
更改为None
。
其他:
仅需要显式删除e2e和src文件夹中的.json文件,而不是整个文件夹本身:
<ItemGroup>
<Content Remove="appsettings.Development.json" />
<Content Remove="ClientApp\e2e\tsconfig.e2e.json" />
<Content Remove="ClientApp\src\tsconfig.app.json" />
<Content Remove="ClientApp\src\tsconfig.spec.json" />
<Content Remove="ClientApp\src\tslint.json" />
<Content Remove="ClientApp\src\assets\json\iconClasses.json" />
</ItemGroup>
这是因为会自动包含任何.json(和.config)文件。 wwwroot
也会自动添加,但在此角度客户端应用程序中未使用。
由于我使用的是ng build --prod
,所以我继续告诉VS停止尝试编译打字稿,因此将其添加到PropertyGroup
中:
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>