繁体   English   中英

如何检测到包含在 new.csproj SDK 格式中的 .cs 文件?

[英]How .cs-files detected for inclusion in the new .csproj SDK format?

在旧格式中,文件显式包含在 <Compile...> 元素中。 新格式的大多数文件不包含在此处,仅显式包含 .csproj 同级级别的 .cs 文件。 通常是“Program.cs”,et.c。

对此没有明确的解释。 大多数只是提到“新约定”和“标准包含和排除路径”。 这些路径是什么? 它会递归搜索 .csproj 文件夹下的子文件夹吗? 如果我创建另一个类型与另一个“包含”的类型冲突的.cs文件,即使它没有明确包含在我的解决方案中,它是否会被错误地解析?

默认编译包括记录在这里

默认编译包括

SDK 中定义了编译项、嵌入资源和None项的默认包含和排除项。 与非 SDK .NET 框架项目不同,您无需在项目文件中指定这些项目,因为默认值涵盖了最常见的用例。 如果需要,这会使项目文件更小,更易于手动理解和编辑。

下表显示了 .NET SDK中包含和排除了哪些元素以及哪些 glob:

元素 包括全局 排除全局 > 删除全局
编译 **/*.cs(或其他语言扩展) **/*。用户; **/*.*项目; **/*.sln; **/*.vssscc 不适用
嵌入式资源 **/*.resx **/*。用户; **/*.*项目; **/*.sln; **/*.vssscc 不适用
没有任何 **/* **/*。用户; **/*.*项目; **/*.sln; **/*.vssscc **/*。CS; **/*.resx

注意默认情况下,由$(BaseOutputPath)$(BaseIntermediateOutputPath) MSBuild 属性表示的./bin./obj文件夹从全局中排除。 排除由属性$(DefaultItemExcludes)表示。

所以是的,它递归搜索项目文件夹中的.cs文件。 如果它找到两个定义相同类型的文件,它将尝试编译它们,你会得到编译器错误。

排除文件使用

<Compile Remove="Path/To/File.cs"/>

<ItemGroup>中。 您也可以在 Visual Studio 中右键单击该文件和 select“从项目中排除”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM