dotnet-campus / SourceYard

Add a NuGet package only for dll reference? By using dotnetCampus.SourceYard, you can pack a NuGet package with source code. By installing the new source code package, all source codes behaviors just like it is in your project.
MIT License
51 stars 12 forks source link

提案:关于源代码包的引用依赖问题 #79

Open walterlv opened 4 years ago

walterlv commented 4 years ago

利益相关:双包用户(库包和源码包,由同一个项目打包出来)

提案内容:

  1. 任何情况下(有或者没有打源码包,有或者没有安装 SourceYard,设置任何源码包的专属配置),项目打出的库包都不应该有区别。
  2. 大多数依赖默认不对打出的源码包产生任何影响,包括:
    • PackageReference
    • ProjectReference
    • Reference
  3. 少部分依赖应该直接加入到源码包中,包括:
    • FrameworkReference
  4. 必须显式声明的依赖,才会加入到源码包的依赖中,见下方示例。

示例 1:将库包作为双包项目中源码包的依赖,打出的源码包将包含库包依赖。

<PackageReference Include="Walterlv.Logger" Version="5.1.0" IsSourceDependency="True" />

示例 2:将双包的源码版本作为双包项目中源码包的依赖,打出的源码包将包含源码包依赖。

<PackageReference Include="Walterlv.Logger" Version="5.1.0" PackAsSourceDependency="Walterlv.Logger.Source" />

示例 3:将源码包作为双包项目中源码包的依赖,打出的源码包将包含源码包依赖。

<PackageReference Include="Walterlv.Logger.Source" Version="5.1.0" IsSourceDependency="True" />

其中示例 3 与此 PR 冲突( https://github.com/dotnet-campus/SourceYard/pull/76 ),将来可能产生兼容性问题。

lindexi commented 4 years ago

示例 2 存在的坑在于更新的问题,如 https://github.com/dotnet-campus/dotnetCampus.YamlToCSharp 改名了,预计将会缺少更改

但是优势在于版本号相同

lindexi commented 4 years ago

示例 3 反过来写就可以,提供 IsSourceDependency="False" 将默认支持 #76 的功能

walterlv commented 4 years ago

@lindexi

示例 2 存在的坑在于更新的问题,如 https://github.com/dotnet-campus/dotnetCampus.YamlToCSharp 改名了,预计将会缺少更改

但是优势在于版本号相同

没懂。

示例 3 反过来写就可以,提供 IsSourceDependency="False" 将默认支持 #76 的功能

也行。相当于源码包你认为默认生成依赖,而库包默认不生成依赖。

lindexi commented 4 years ago

示例 2 存在的坑

           <PackageReference Include="Walterlv.Logger" Version="5.1.0" PackAsSourceDependency="lindexi.doubi.Source" />

然后半天没调试出来

walterlv commented 4 years ago

示例 2 能写出来的唯一原因是:引用的是一个双包,否则永远不可能写出等价的代码来。所以,你可以做编译检查。