zoukankan      html  css  js  c++  java
  • nuget的小Tips

    1.nuget常用命令

    nuget spec -a binDebugDllName.dll -f //根据dll生成.nuspec文件,这样会生成无用的默认标签,比如licenseUrl、tags等
    cd [ProjectDir]
    nuget pack //建议根据项目生成nupkg,并从中解压出nuspec文件,这样生成的内容最精简
    
    nuget pack DllName.nuspec -Build -Prop Configuration=Release //根据nuspec打包,但Build无效,不会生成项目
    nuget pack [ProjectName].csproj -Build -Prop Configuration=Release //根据csproj打包,会自动Build,自动根据*.nuspec修改元数据,自动根据*.packages修改Dependency
    
    nuget push [ProjectName].*.nupkg [api-key] -S [PrivateNugetUrl]
    

    2.添加pdb

    需要添加pdb方便调试的话,可以在解压出来的.nuspec中添加自定义<files>节,如下:

    <?xml version="1.0"?>
    <package >
      <metadata>
        <id>TestNuget</id>
        ...
      </metadata>
      <files>
      	<!--<file src="binDebugTestNuget.dll" target="lib
    et45" />-->
      	<file src="binDebugTestNuget.pdb" target="lib
    et45" />
      </files>
    </package>
    

    注意<files>节是在metadata的外面,dll文件默认就会打包,不需要重复添加。

    3.vs里自动发布

    当然要在vs里能一键发布才方便,最简单的方法是在外部工具里加个bat:

    nuget pack %~1 -Build -Prop Configuration=Debug -o %~3
    nuget push %~3\%~2.*.nupkg [api-key] -S [PrivateNugetUrl]
    del %~3\%~2.*.nupkg /q
    

    然后在工具的参数里输入$(ProjectDir)$(ProjectFileName) $(TargetName) $(ProjectDir)bin分别作为1、2、3号参数。这里有3个小坑:

    • $(ProjectDir)居然会输出2个"\",导致nuget报某些文件找不到,拼接之后的输出目录是正确的,无语了。
    • 不支持选中多个项目发布,因为宏参数里没有$(SelectedProjects)之类的东东,DTE.ActiveSolutionProjects倒是可以,但是只能在插件里写,暂时没有想到好办法,知道的同学可以分享一下。
    • Debug和Release的区别,这一点其实不能算坑。Debug:不优化代码、调试信息=full;Release:优化、调试信息=pdb-only。不论代码是否优化,都可以从vs直接F5启动调试,但如果要附加调试(Attach to process),就只能选Debug。关于full vs. pdb-only的区别,请参见这里
  • 相关阅读:
    关于matplotlib绘制直方图偏移的问题
    XP下 无法定位程序输入点WSAPoll于动态链接库ws2_32.dll 的解决办法
    Ubuntu 拨号上网及校园网开启IPV6
    php性能优化
    Mac OS X 10.11.6 重置root密码
    php 接口类与抽象类的实际作用
    Redis Cluster集群的搭建与实践
    nginx 反向代理 取得真实IP和域名
    mysql主从配置,出错
    mycat水平分片规则
  • 原文地址:https://www.cnblogs.com/AlexanderYao/p/5308823.html
Copyright © 2011-2022 走看看