使用 Directory.Build.props 从所有项目中排除文件夹?
Exclude folder from all projects using Directory.Build.props?
我有一个项目解决方案,每个项目都包含文件夹“Previews”。我希望此文件夹始终从我的项目中排除。
当我通过 Visual Studio“从项目中排除”时,以下内容被添加到 .csproj
文件中:
<ItemGroup>
<Compile Remove="Previews\**" />
<EmbeddedResource Remove="Previews\**" />
<None Remove="Previews\**" />
</ItemGroup>
如果我从 .csproj
文件中删除它,并将其添加到 Directory.Build.props
文件,它不再从 VS 中排除该文件。
我也试过使用 "$(ProjectDir)\Previews\**"
和没有属性的完整路径,两者都不起作用。
如何实现?这似乎应该是可能的,因为 VS 可以获取声明的引用,以及解决方案 .props
文件中的许多其他项目属性。
而不是,你应该使用Directory.Build.targets
.
你的操作是覆盖MSBuild上的一些项目,这就是.targets
文件的功能。它在csproj
文件的底部导入,以便覆盖项目。(msbuild从上到下读取并取最后一个XML节点作为最终值)。
但是 .props
文件被导入到csproj
文件的顶部,它被用来定义一些新的全局属性。 由于在顶部导入,不能作为覆盖值操作,总是被csproj文件主体下的属性覆盖
除此之外,您还可以this official document了解这两个文件的用法
由于你的item remove
是覆盖操作,你应该把文件改成Directory.Build.targets
.
注意:这两个文件在构建过程中嵌入到主csproj文件中。所以所有的msbuild properties, items,....都可以在这两个文件下使用。
我有一个项目解决方案,每个项目都包含文件夹“Previews”。我希望此文件夹始终从我的项目中排除。
当我通过 Visual Studio“从项目中排除”时,以下内容被添加到 .csproj
文件中:
<ItemGroup>
<Compile Remove="Previews\**" />
<EmbeddedResource Remove="Previews\**" />
<None Remove="Previews\**" />
</ItemGroup>
如果我从 .csproj
文件中删除它,并将其添加到 Directory.Build.props
文件,它不再从 VS 中排除该文件。
我也试过使用 "$(ProjectDir)\Previews\**"
和没有属性的完整路径,两者都不起作用。
如何实现?这似乎应该是可能的,因为 VS 可以获取声明的引用,以及解决方案 .props
文件中的许多其他项目属性。
而不是,你应该使用Directory.Build.targets
.
你的操作是覆盖MSBuild上的一些项目,这就是.targets
文件的功能。它在csproj
文件的底部导入,以便覆盖项目。(msbuild从上到下读取并取最后一个XML节点作为最终值)。
但是 .props
文件被导入到csproj
文件的顶部,它被用来定义一些新的全局属性。 由于在顶部导入,不能作为覆盖值操作,总是被csproj文件主体下的属性覆盖
除此之外,您还可以this official document了解这两个文件的用法
由于你的item remove
是覆盖操作,你应该把文件改成Directory.Build.targets
.
注意:这两个文件在构建过程中嵌入到主csproj文件中。所以所有的msbuild properties, items,....都可以在这两个文件下使用。