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 吗?
c# *.csproj文件里的UseVSHostingProcess在VS2005的哪里设置?
为 .NET Core 项目 - CSPROJ - 而不是 JSON 项目设置版本号