CreateLocalPackages
使用 Visual Studio 2017 中的新 CSProj 格式,我编写了一个目标文件来处理一个名为该文件夹中任何解决方案包的最高编号。
我的解决方案有几个项目,每个项目都构建一个 NuGet 包,其中一些项目依赖于解决方案中的其他项目。
例如,使用本地包目录中的这些文件:
BaseLibrary.2.1.0.1-betalocal.nupkg
BaseLibrary.2.1.0.1-betalocal.symbols.nupkg
BaseLibrary.Specialized.2.1.0.1-betalocal.nupkg
BaseLibrary.Specialized.2.1.0.1-betalocal.symbols.nupkg
下次CreateLocalPackages
配置干净构建时,它将选择创建这些包:
BaseLibrary.2.1.0.2-betalocal.nupkg
BaseLibrary.2.1.0.2-betalocal.symbols.nupkg
BaseLibrary.Specialized.2.1.0.2-betalocal.nupkg
BaseLibrary.Specialized.2.1.0.2-betalocal.symbols.nupkg
我已经很好地工作了,除了 Visual Studio 似乎BaseLibrary\BaseLibrary.Specialized\obj\project.assets.json
在我可以挂接到 MSBuild 目标并将 $(Version) 更改为 之前创建文件2.1.0.2
,导致BaseLibrary.Specialized.2.1.0.2-betalocal.nupkg
只引用此依赖项:BaseLibrary.2.1.0-betalocal
. Visual Studio 似乎project.assets.json
在调用 MSBuild 构建项目之前执行的 NuGet 还原步骤期间生成。
我已经尝试运行我的版本号逻辑BeforeTargets="CollectPackageReferences;_ComputeTargetFrameworkItems"
以便在Restore
目标链的早期被调用,但它似乎不像 Visual Studio 调用MSBuild /t:Restore
来恢复 NuGet 包引用(并生成project.assets.json
)。我不知道它是否有自己的逻辑,或者它是否调用了另一个工具。
我希望能够告诉 VS 重建并让它找出新版本,构建和打包所有内容,并列出正确的依赖版本。