VS2017 csproj 没有 ItemGroup 标签

Posted

技术标签:

【中文标题】VS2017 csproj 没有 ItemGroup 标签【英文标题】:VS2017 csproj don't have ItemGroup tag 【发布时间】:2018-07-03 13:05:35 【问题描述】:

如果我使用 VS2017 创建一个项目(使用 TargetFramework 作为 netstandard2.0),csproj 会自动选择复制到该目录的所有 *.cs/文件夹,并且 csproj 文件不包含对 *.cs 文件的任何引用.

如果我必须使用命令行选项 MSBUILD 来使用 sln/csproj 编译项目,我该怎么做?因为 csproj 不包含对 cs 文件的引用。

因为较早的 csproj(使用 vs2012 创建)版本会包含包含要编译的文件列表的标签,但在 VS2017 中,csproj 文件不再包含这些标签。

【问题讨论】:

如果您使用的是最新的 MSBuild,它将理解新的 csproj 格式。你试过建造吗? 同意,但是如果我想在构建时排除一些文件,我该怎么做 您仍然可以像以前一样包含文件。只需这样做并为文件设置构建操作。 好的,你的意思是手动在csproj中添加文件并构建它?那么引用呢?msbuild 会自动获取它吗 MSBuild 将拾取所有文件并构建它们。如果要从构建过程中排除文件,可以添加 <ItemGroup><Compile Remove="SomeFile.cs" /></ItemGroup> 【参考方案1】:

如果您使用的是最新的 MSBuild,它将理解新的 csproj 格式并自动包含所有文件。

但是你仍然可以在你的 csproj 中使用ItemGroup,如果你想阻止一个文件被编译或者想给它特殊的属性,这特别有用。例如,如果您有一个名为 Foo.cs 的文件,您不想将其编译为库的一部分,则可以将其添加到 csproj:

<ItemGroup>
    <Compile Remove="Foo.cs" />
</ItemGroup>

【讨论】:

以上是关于VS2017 csproj 没有 ItemGroup 标签的主要内容,如果未能解决你的问题,请参考以下文章

我可以将这个旧的 csproj 迁移到 VS2017 csproj 吗?

WPF 应用程序使用新的 csproj 格式

c# *.csproj文件里的UseVSHostingProcess在VS2005的哪里设置?

为 .NET Core 项目 - CSPROJ - 而不是 JSON 项目设置版本号

关于更新vs2017后发布的问题 命令“bower install”已退出,代码为 9009

VS2017开发的IDE扩展