【发布时间】:2018-05-12 07:14:49
【问题描述】:
我目前正在利用较新的 Visual Studio 2017 工具从 *.xproj 和 project.json 格式升级到 *.csproj 文件格式。以下是我为 IDE 和 SDK / .NET Core CLI 使用的版本:
Visual Studio 版本
Microsoft Visual Studio Community 2017
Version 15.4.3
VisualStudio.15.Release/15.4.3+27004.2008
Microsoft .NET Framework
Version 4.7.02558
SDK / .NET Core CLI
.NET Command Line Tools (2.0.2)
Product Information:
Version: 2.0.2
Commit SHA-1 hash: a04b4bf512
Runtime Environment:
OS Name: Windows
OS Version: 6.3.9600
OS Platform: Windows
RID: win81-x64
Base Path: C:\Program Files\dotnet\sdk\2.0.2\
Microsoft .NET Core Shared Framework Host
Version : 2.0.0
Build : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d
话虽如此,我很好奇如何从不依赖.nuspec 创建的 NuGet 包中排除wwwroot。这可能吗?
.csproj
这是我的.csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<!-- omitted for brevity -->
</PropertyGroup>
<ItemGroup>
<Compile Remove="wwwroot\**\*;node_modules" />
<EmbeddedResource Include="Views\**" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
<None Update="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<PackagePath>lib/net461/</PackagePath>
<Pack>true</Pack>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
<None Update="wwwroot\**\*">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
</ItemGroup>
<ItemGroup>
<!-- package references, omitted for brevity -->
</ItemGroup>
</Project>
包装内容
这是包装内容的图片:
理想情况下,我希望内容类似于排除content 和contentFiles 位,而只是成为lib 和.exe。
【问题讨论】:
-
您真的要打包可执行文件吗?你想建立一个图书馆吗?默认情况下,使用 web sdk 的项目不打包,因为对于 web 项目并没有很好的可重用性故事。如果您想创建一个库,请从 SDK 中删除
.Web- 这也会删除内容项(如果您真的想打包可执行文件,您仍然可以使用 msbuild 项更新将它们从打包中排除) -
是的,我想打包
.exe,我想排除wwwroot。我们目前有一个主机可执行文件,它使用其他exe,将它们加载到主机应用程序域中并公开它们的 Web API 端点 - 以便我们可以动态共享主机。更改 SDK 位有什么缺点? -
公开你的意思是转发请求或负载控制器?然后它更像是一个库。没有 web sdk,你将失去 vs 启动设置、web 发布方法和这些修改的项目项默认值(content/none/wwwroot)
标签: c# nuget .net-core visual-studio-2017