【问题标题】:VS2017 csproj don't have ItemGroup tagVS2017 csproj 没有 ItemGroup 标签
【发布时间】: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>

标签: c# .net visual-studio-2017


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2019-05-08
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多