每个产品一个根目录
Directory.Build.props的工作模式和NuGet.Config不同,Directory.Build.props不能继承。当dotnet restore工作的时候,会从当前目录开始,逐级向上查找,找到一个Directory.Build.props文件,就不会再向上查找了。
公司如果有多套产品在开发,一般每个产品里面,对同一个包,使用唯一版本号就可以了。
因此每个产品一个根目录就行。比如我们公司正在开发“进销存”,那么就在“E:\dev\进销存”这里放置一个Directory.Build.props即可
如何让所有的开发人员,都能获取到最新的Directory.Build.props及其Import的相关文件呢?
如果都在一个办公室,用Windows网络共享来拷贝也是权宜之计。下载大家都习惯远程协同办公了,自然是用网站来分发这堆文件更妥当。
然后编写一个Windows批处理文件,放在产品根目录,文件名称是“E:\dev\进销存\download-directory-builds-props.bat”。
download-directory-builds-props.bat内容如下:
注意:脚本里要写上分发文件的http网站的完整URL。
#@echo off
del Directory.*.props /q
del urls.txt /q
# Windows的批处理文件声明变量的时候,“=”前后不能有空格
set websiteRootUrl="http://dev.amihome.cn/"
ECHO. %websiteRootUrl%
wget %websiteRootUrl%urls.txt --content-disposition
for /f %%i in (urls.txt) do (echo %%i
wget -nv -x -nH %websiteRootUrl%%%i --content-disposition
)
dotnet nuget locals plugins-cache --clear
ECHO.
ECHO.BIN and OBJ folders have been successfully deleted. Press any key to exit.
pause > nul
上述脚本需要wget
去wget官网下载1.15版本,这个版本只有wget.ext一个文件,不依赖其它组件。如果下载1.2以后的版本,windows 11打了最新补丁的会自动删除wget.exe。
然后找一个文件夹保存。我们是放在D:\tools\wget下,然后把这个wget加入Windows的“用户变量”或者“系统变量”的“Path”里。
我是在“系统变量”这里添加了,详细步骤如下:
D:\tools\wget下的文件
在我的Windows下,步用重新启动电脑就生效了。也许你的系统是需要重新启动。
执行download.bat
在产品根目录下,双击download.bat
然后就会发现多了一个urls.txt和一个Directory.Build.props,另外多了子文件夹,子文件夹里面是Import的那些文件。
脚本执行的时候我截图如下:(脚本执行的太快了)
因为wget后面我带了开关,所以会根据url里面的路径,自动创建子目录。