这些文件是在包恢复期间创建的,这就是为什么我认为它们不必在存储库中。是否有关于这些文件目的的进一步文档可能有助于回答这个问题?
答案 0 :(得分:8)
对于.NET Core项目,nuget.g.targets和nuget.g.props由NuGet还原生成。它们是在obj文件夹中创建的。所以你不需要在版本控制中使用这些。通常,obj文件夹中的文件不包含在版本控制中。
如果缺少解决方案,Visual Studio将自动恢复这些文件。
如果您使用的是构建服务器,则可以运行dotnet restore
来还原这些文件。与Visual Studio 2017一起安装时,MSBuild 15也可用于通过为解决方案运行msbuild /t:Restore
来恢复这些文件。
nuget.g.targets和nuget.g.props文件定义了各种属性,例如程序包缓存在计算机上的路径。它们还包括项目引用的NuGet包所需的任何MSBuild导入。
例如,如果您引用了Microsoft.Net.Test.Sdk NuGet包,则nuget.g.targets和nuget.g.props会导入该NuGet包中包含的MSBuild文件。使用packages.config文件时,这些导入将直接添加到项目文件(.csproj)中。
答案 1 :(得分:3)
.targets
文件,因此在读取项目文件时需要将其放在适当的位置。如果在构建项目的开始时完成NuGet包恢复,则在读取项目文件时不存在这些文件。
因此将这些文件放入源代码控制中,以便在加载项目文件时它们始终存在。
另一种方法是让项目(所有其他项目都依赖于该项目)强制NuGet Package Restore用于整个解决方案(但本身不使用任何软件包)。在构建之后,当项目文件到位时,所有目标文件都已到位。
当然,许多NuGet包都不使用这些文件,这不是问题。