您可以通过在其中设置属性来选择将哪个项目打包为 nuget 包csproj
文件,像这样:
<IsPackable>true</IsPackable>
- 创建包
<IsPackable>false</IsPackable>
- 不创建包
如果您不想在每个文件中指定它,您可以创建一个名为的文本文件Directory.Build.props
在包含以下内容的目录中:
<Project>
<PropertyGroup>
<IsPackable>false</IsPackable>
</PropertyGroup>
</Project>
它将自动包含在该文件夹和所有嵌套文件夹中 SDK 项目文件 (csproj) 的开头,因此您可以为这组项目指定通用默认值,并且如果需要,可以在各个 csproj 文件中覆盖它们。
如果您不希望它们被覆盖或需要使用 csproj 中定义的某些值,则应该使用文件名Directory.Build.targets
,这将自动包含在 csproj 的末尾。
在我们的项目中,我们使用以下结构:
\
\src
<actual projects>
Directory.Build.props
\tests
<unit tests>
Directory.Build.props
Directory.Build.props
MySolution.sln
通过这种方式,我们能够为测试项目和常规项目指定不同的公共属性。
需要注意的是,默认情况下只有第一个Directory.Build.props
发现的csproj
将被应用,要更改此行为,您需要在嵌套的开头添加此行Directory.Build.props
文件(在Project
tag):
<Import Project="$([MSBuild]::GetPathOfFileAbove('$(_DirectoryBuildPropsFile)', '$(MSBuildThisFileDirectory)../'))" />
有关所有这些的更多信息可以在这里找到:https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2017 https://learn.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2017