多个解决方案的共享项目的 NuGet 提示路径问题
NuGet Hint Path Issue with shared project for multiple solutions
我有四个解决方案,第一个解决方案(我们称之为通用)有一些我想分享的通用项目。我已将我需要的内容添加到其他三个解决方案(我们称它们为 A、B、C)中。其中一个常见的项目实现了 entity framework nu get 包,我通过 "manage solution packages".
添加了它
当我将此项目添加到 A、B 或 C 时,解决方案无法编译,因为它找不到 entity framework DLL 的引用,我必须删除包并通过 "manage solution packages",然后它就会工作。但是,除非我对它们执行相同操作,否则不会构建其他解决方案,这将撤消第一个解决方案上的映射。这还不算太糟糕,但是三个解决方案中的两个将通过自动构建失败,并显示无法解析包的错误。
我想实现的是如何能够编译解决方案 A、B、C 而不必每次都重新安装此包,并且如果可能的话将其保留为更新的 nu get 包?
希望这是有道理的。
Install-Package RelativeHintPaths
我们通过修改提示路径以通过 python 脚本使用 $(SolutionDir) 来解决此问题。
如果它可能经常更改,则可以自动执行 - 您也可以修改脚本以使用 glob 搜索所有 csproj 文件。
这个解决方案对我们来说更可取,因为构建服务器不需要做任何修改,我们只通过解决方案文件构建而不是直接使用 csproj
import glob, os, re
def Main():
print 'Fixing Nuget Package References'
files = [
r'..\Common\Common.Auth\Common.Auth.csproj',
r'..\Common\Common.Core\Common.Core.csproj',
]
for file in files: ProcessFile(file)
def ProcessFile(path):
print 'processing ' + path
text = ''
with open(path) as f: text = f.read()
updated = re.sub(r"<HintPath>(?:(?!\packages)(?:.|\n))*\packages", r"<HintPath>$(SolutionDir)\packages", text)
if (text == updated): return #no update requried
with open(path, 'w') as f: f.write(updated)
if __name__ == "__main__":
Main()
我有四个解决方案,第一个解决方案(我们称之为通用)有一些我想分享的通用项目。我已将我需要的内容添加到其他三个解决方案(我们称它们为 A、B、C)中。其中一个常见的项目实现了 entity framework nu get 包,我通过 "manage solution packages".
添加了它当我将此项目添加到 A、B 或 C 时,解决方案无法编译,因为它找不到 entity framework DLL 的引用,我必须删除包并通过 "manage solution packages",然后它就会工作。但是,除非我对它们执行相同操作,否则不会构建其他解决方案,这将撤消第一个解决方案上的映射。这还不算太糟糕,但是三个解决方案中的两个将通过自动构建失败,并显示无法解析包的错误。
我想实现的是如何能够编译解决方案 A、B、C 而不必每次都重新安装此包,并且如果可能的话将其保留为更新的 nu get 包?
希望这是有道理的。
Install-Package RelativeHintPaths
我们通过修改提示路径以通过 python 脚本使用 $(SolutionDir) 来解决此问题。 如果它可能经常更改,则可以自动执行 - 您也可以修改脚本以使用 glob 搜索所有 csproj 文件。 这个解决方案对我们来说更可取,因为构建服务器不需要做任何修改,我们只通过解决方案文件构建而不是直接使用 csproj
import glob, os, re
def Main():
print 'Fixing Nuget Package References'
files = [
r'..\Common\Common.Auth\Common.Auth.csproj',
r'..\Common\Common.Core\Common.Core.csproj',
]
for file in files: ProcessFile(file)
def ProcessFile(path):
print 'processing ' + path
text = ''
with open(path) as f: text = f.read()
updated = re.sub(r"<HintPath>(?:(?!\packages)(?:.|\n))*\packages", r"<HintPath>$(SolutionDir)\packages", text)
if (text == updated): return #no update requried
with open(path, 'w') as f: f.write(updated)
if __name__ == "__main__":
Main()