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

请增加支持共享项目 #117

Open vicwjb opened 1 year ago

vicwjb commented 1 year ago

共享项目无法生成正确的源码包,麻烦请增加支持

lindexi commented 1 year ago

@vicwjb 共享项目本身就属于一个特殊类型的源代码包了,可能不会被考虑哦

vicwjb commented 1 year ago

这真是一个悲伤的故事,我现在利用如下项目的办法搞源码包了 https://gist.github.com/attilah/fd3e71f03fd258c496179e0200c57b0b#file-x-y-z-sources-csproj 相关的教程如下: https://medium.com/@attilah/source-code-only-nuget-packages-8f34a8fb4738 希望对本项目有所帮助。

lindexi commented 1 year ago

@vicwjb 没啥想法,因为这只是我认为不想考虑共享项目而已

vicwjb commented 1 year ago

没有办法啊,一个net版本下,要多个项目,头疼啦,只能搞共享了。。。不然清清爽爽的干嘛非得用共享项目。

lindexi commented 1 year ago

@vicwjb 没理解,为什么不一个项目被引用

vicwjb commented 1 year ago

1、提供普通的nuget包。 2、提供源码包。 3、提供一个纯源码的项目,共git子模块使用。 上述三种包提供了三种目标人群:分别为纯纯的调用者,想看看源码的调用者(不想项目里多很多dll),想参与开发的调用者(子模块可以改代码)

lindexi commented 1 year ago

@vicwjb 依然没了解贡献项目的原因

vicwjb commented 1 year ago

好吧,其实就是自讨苦吃,一直迁就那几个用户的奇葩需求。

vicwjb commented 1 year ago

目前,我用上面的办法,做出来的双包效果不错,如果有兴趣,具体的可以看下我的项目:https://gitee.com/inspirefunction/ifoxcad/tree/testjingsource/src/Basal 然后有个问题不知是否我的操作原因: 利用SourceYard生成的源码包,打开的代码是可以修改的,但是我想大部分的情况是源码包只是为了解决用户不想要那么多依赖的dll的问题,而源码却是不希望用户乱改的,不然出问题,跑到项目里提issue,然后作者弄了半天复现不了,最后发现用户自己改的代码问题,就很尴尬。 利用我上述提到的办法做的源码包就没有这个问题 ,代码是只读的。虽然解包后依然可以手动改,但是至少在vs里是只读的,不允许修改。

然后就涉及到我上面回复的三种需求的效果了。有的用户就是又要源码,又要能改,还不想多了依赖的dll,这时候我就只能提供一个共享的项目,把所有的源码都放在里面,然后教他们用git子模块引用这个共享项目,这样他们能改的同时,万一能有几个pr也是不错的。

lindexi commented 1 year ago

@vicwjb 理论上修改是无效的哦,因为会被 nuget 干掉的