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
50 stars 12 forks source link

支持在源码包中自动引用 dll #87

Closed walterlv closed 2 years ago

walterlv commented 4 years ago

库项目里的这个,在业务项目用源码包安装后,会无法编译,必须手工引用才行。

<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
  <Reference Include="System.Web" />
</ItemGroup>
lindexi commented 3 years ago

这里有坑在于现在不能分开多个框架的项目

Zhuangkh commented 2 years ago

这里有坑在于现在不能分开多个框架的项目

源码包的依赖从库包的nuspec拿如何,这样的保证双包的依赖一致,也能解决依赖引用问题...就是流程上会依赖库包的生成

lindexi commented 2 years ago

@Zhuangkh 感谢,但似乎不是此问题导致。核心原因是源代码包没有做多分包。多个框架都采用相同的包和内容,对于多个项目来说都是使用相同的执行逻辑

Zhuangkh commented 2 years ago

@lindexi

现在的源码包会将所有包依赖直接放在dependencies节点下,而实际上应该根据tfm放在dependenciesgroup节点中才能被项目正确引用,关于这点我不确定是不是nuget的版本升级导致的,因为官方文档确实写着可以直接放在dependencies下.

另外就是没有检测referenceframeworkAssemblies.

我正在尝试解决这个问题...解决完引用问题就相当满足我的需求了,想问下你们都是咋调试的..我感觉这个调试体验相当麻烦..

walterlv commented 2 years ago

@Zhuangkh 安装完源码包后,你的项目里会多出 SourceProject 文件夹,里面有安装的项目对应的 targets 文件,取消注释里面的文件就可以拉项目下来调试源码包了。

walterlv commented 2 years ago

@lindexi 引用问题,我觉得没那么难的样子呀。

方法一:

  1. 分 Framework 收集引用

方法二:

  1. 把非源码包解出来,把里面的 Dependencies 节点下的所有内容拷过来重新打包
Zhuangkh commented 2 years ago

@Zhuangkh 安装完源码包后,你的项目里会多出 SourceProject 文件夹,里面有安装的项目对应的 targets 文件,取消注释里面的文件就可以拉项目下来调试源码包了。

我指调试SourceYard这个项目

方法二:

  1. 把非源码包解出来,把里面的 Dependencies 节点下的所有内容拷过来重新打包

源码包的依赖从库包的nuspec拿如何,这样的保证双包的依赖一致,也能解决依赖引用问题...就是流程上会依赖库包的生成

我也是这个意思,感觉这样是最方便的,也不用自己再去区分哪些是frameworkAssemblies哪些是reference

lindexi commented 2 years ago

@lindexi 引用问题,我觉得没那么难的样子呀。

方法一:

1. 分 Framework 收集引用

方法二:

1. 把非源码包解出来,把里面的 Dependencies 节点下的所有内容拷过来重新打包

我选方法一

lindexi commented 2 years ago

@Zhuangkh 调试方法,参阅: 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 - walterlv

Zhuangkh commented 2 years ago

@lindexi 我尝试按方法一写了一下https://github.com/dotnet-campus/SourceYard/pull/111 现在的思路是将库引用和框架引用分版本,放到原来的 <SourcePackingDirectory>$(IntermediateOutputPath)SourcePacking\</SourcePackingDirectory>里; 将不需要分版本的文件 如CompileFile.txt那些放到另一个路径 <PackingDirectory>$(BaseIntermediateOutputPath)SourcePacking\</PackingDirectory>. 再相应去修改生成的nuspec文件,现在framework assemblies的引用应该是正常的了, 包引用在nuget浏览器中显示正常,但加载到项目中时不会自动去还原,还没找到问题