问题标签 [code-sharing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
907 浏览

flash - 移动和 Web 应用程序的共享代码库?

我一直在开发移动应用程序一段时间。它可以在 iOS 和 Android 上运行,也可以作为 AIR 应用程序在桌面上运行。这很棒,我对此感到非常兴奋。然而,上周有人问我为什么不能导出在网络浏览器中运行的应用程序版本。我说我认为我可以并且我会调查它。

但是为什么要在桌面上运行移动代码呢?

有几个原因:

  • 更多的代码重用。这并非在所有情况下都有意义,但在许多情况下确实如此。(我不会详细说明,因为我认为这是不言而喻的。如果你不同意,我很乐意谈论它,但我不想用它来阻塞这个描述。)
  • 更快/更简单的客户端演示。无需在移动设备上安装 apk 或 ipa,我只需发送一个 URL。

那么我发现了什么?好吧,从我到目前为止所尝试的......它......不起作用。或者更确切地说,我无法让它发挥作用。

我首先为所有共享代码创建了一个 Flex 库项目。然后我创建了 2 个引用它的应用程序项目——一个用于移动设备,一个用于 Web。移动项目工作正常,但网络项目不能。到目前为止,这是我尝试使其工作的方法:

  • 我尝试将 mobilecomponents.swc 和 mobile.swc 主题添加到我的 Web 项目中,以便 Flash Builder 了解 MobileSkin(和其他仅限移动设备的类)。这使我的应用程序能够编译,但是当我启动它时,它会立即在 UIComponent: 内引发运行时错误VerifyError: Error #1014: Class flash.text::StageText could not be found。我对这个错误几乎没有发现,而且我发现的一个提示(添加--swf-version=13编译器选项)不起作用。
  • 我尝试使用条件编译来控制我的皮肤组件继承自哪个类:MobileSkin 或 SparkSkin。这只是一个快速实验,看看它是否有效。我知道这很恶心,而不是生产解决方案。不过我的想法是,如果 MobileSkin 真的只是 SparkSkin 的优化版本,我的皮肤应该可以继承其中任何一个。这并没有立即奏效——应用程序无法编译 b'c 某些方法丢失(例如 layoutContents),所以我放弃了它,因为一开始感觉很脏。
  • 我尝试用 UIComponent 替换 MobileSkin 作为我所有皮肤的超类,我认为 MobileSkin 可能只是 UIComponent 的轻量级子类。这种方法一开始会导致一些编译器错误(例如,没有 layoutContents 方法、没有measuredDefaultWidth/measuredDefaultHeight 属性、addChild 与 addElement 等)。一旦这些问题得到解决,应用程序就会编译,但会在 UIComponent 的“getState”方法中出现运行时错误。(看起来 MobileSkin 重写了这个方法来防止 UIComponent 的默认行为。)

所以到目前为止,这些方法都没有对我有用……但是你们呢?你遇到过这个问题吗?您是否能够使其发挥作用,或者您能发现我在上面提到的方法中所犯的任何明显的疏忽吗?如果可以的话,请提前致谢。


更新:问题已解决

我已经能够在上面提到的第一条路线上取得进展:将 mobilecomponents.swc 和 mobile.swc 主题添加到我的 web 项目中

事实证明,Flash Builder 在这方面误导了我。使用“合并到代码”设置将移动 SWC 添加到您的库项目会导致编译器警告:swc '/Applications/Adobe Flash Builder

4.6/sdks/4.6.0/frameworks/themes/Mobile/mobile.swc' 具有默认样式并且位于库路径中,这意味着将在没有样式的情况下链接依赖项。这可能会导致使用输出 swc 的应用程序缺少皮肤。swc 应该放在外部库路径中。

第一次看到这个,我将链接类型更改为“外部”,警告消失了。然后在我的 Web 项目中,我还添加了移动 SWC,并将链接类型设置为“合并到代码中”。Flash Builder 似乎对这种方法很满意,但是在运行我的应用程序时,我遇到了奇怪的运行时错误(如上所述)。

事实证明,我的第一次尝试是正确的方法。将库项目上的链接类型设置为“合并到代码中”,然后不要从您的 Web 项目重新链接。Flash Builder 会警告您,但忽略该警告。现在大部分情况下事情似乎运作良好!我有一两个问题要研究(例如,列表组件不滚动),但总体上看起来很有希望!

0 投票
3 回答
6073 浏览

c# - Centralized live collaborative editing in Visual Studio

Now before you shoot me for bringing up a duplicate question on SOF, let me first acquaint you with exactly what I'm looking for, and I will address other questions and answers and why it is insufficient.

Question #1:

I'm looking for a way to perform live collaborative edits, while the source is maintained on a centralized source control server. For example, if Me and Joe Blow are editing file X.cs at the same time, we should be able to see each-other's edits as we type. Almost as if we were sitting together at the same computer. Now take the following scenario: Me and Joe go offline, and Nimha Smith decides she wants to update some code. When I come back online the following day, I get pushed the code that Nimha updated while I was sleeping/away from the server.

This is a combination of the idea of live collaboration, and a source control system like SVN, etc.

Addressing of the possible duplicates:

There was a similar question, here: Collaborative editing for .NET development - what are the possibilities, however it does not give me anything useful and I'll explain why:

  • VsAnywhere: It runs through a central public server (right direction..?) except all parties involved need to have the exact same code on their machine before joining a session, and once you go offline the session is destroyed.
  • SourceMeet: Runs with a P2P system, so no server to keep track of changes while offline etc. Have not tried it, so I can not attest to how well it can merge code (if it can at all)
  • CollabEdit: Not VisualStudio
  • Cloud 9: Not VisualStudio

And there is obviously this question and this one that are questions directly about source control software such as SVN or GIT. Now, I tried to get VSAnywhere and SVN to play nice together, (SVN for getting changes made while offline, and VSAnywhere for the online developers) but it simply does not work.

<edit>

I recently found this bachelor thesis project named Collab, and it seems like a good idea, but I could not seem to get it working to try it. If anyone else has any success with it please let me know what you did. It looks like if I can get this collab project working it seems like it would be a good start into creating something to fit my needs.

<edit2>

I've also come across BeWeeVee which had a Visual Studio extension for it's service, but all the links for it have gone dead. And CodeALike which was probably their replacement for VS real-time collaboration has a FAQ entry explaining that it's real-time features have been removed and will be re-implemented in the "future".

Question #2:

Now this brings me to the second part of my question because I fully realise there may not be a program out there that fits my tall order. Where could I start implementing software such as this myself? Are there some existing open-source source-control / real-time editing code that I can begin to build off of to create this? Or am I pretty much stuck starting from scratch if I want to implement this. And I'm sure you can see by the tags that I would like to tackle a task like this in C#, if I have to tackle it at all.

Update 2017

As there has been some continued interest expressed in the comments I've created a gitter where we can gather anyone interested and potentially make this a reality: https://gitter.im/sof-centrailized-collab-editing/Lobby.

0 投票
1 回答
74 浏览

open-source - 您如何在 code.google.com 上与多个 repos 共享项目?

对于您在 code.google.com 上拥有的所有存储库,我很难找到一个页面或 URL 来指向某人。

有谁知道怎么做?我需要做任何事情来创建一个类似于我在 bitbucket 和 github 上获得的页面吗?

0 投票
2 回答
3637 浏览

c# - 在 TFS 中的解决方案之间共享代码

我有几个不同的应用程序需要在它们之间共享代码以减少维护。我试图阅读很多关于 stackoverflow 和一般网络的内容,这是一个相当普遍的问题;我还没有找到我喜欢的答案。

我们的 TFS 分支结构是这样的。我们有三个分支开发,主要和生产。在 Development 分支上,所有活跃的开发都完成了,当我们完成新功能的开发时,我们将它与 Main 合并,然后再到生产中。生产分支始终是在服务器上运行的代码。如果我们检测到必须在下一次迭代之前修复的错误。更改主要完成,并在我们部署时与生产合并。需要共享代码的应用程序不共享公共分支层次结构或公共迭代计划。事实上,其中一个应用程序每年只进行一次 1 个月的迭代。(我知道这与传统的做法略有不同。

在我的研究中,我发现了一些不同的解决方案,但我都遇到了问题。

二进制文件共享:我发现的一种常见方法是将编译后的二进制文件分支到开发分支下的文件夹中。我的问题是,如果我们在哪里检测必须快速修复的共享代码中的错误,那么有问题的代码就会被编译。如果我们在哪里修复错误,我们将对共享代码库进行所有更改。

项目共享:我的主要问题是如何以可接受的方式完成。我最初的想法是当新的迭代开始时,将主分支的更改与共享代码合并以更新它。将主分支与开发分支合并,以使用错误修复导致的更改来更新开发分支。并将共享代码的新更新版本分支到开发分支中。但据我了解,这不受 TFS 支持,因为我会创建嵌套分支。

我的问题是:如何在解决方案之间共享一些常见项目,同时保持它们隔离,并能够修复主分支上的错误,而不必担心常见项目已更改并因此引入新错误。但仍然能够修复公共项目中的错误并将这些修复合并回共享的公共项目中。

0 投票
6 回答
11051 浏览

java - 如何与其他开发者共享 Java 项目?

我正在与一个合作者一起开发一个 Java 项目,我们都在使用 Eclipse 编辑器。我想做的是能够与他共享 .java 文件,这样我们就可以分别编辑它,但看看对方写了什么。目前,我通过共享一个包含项目的 Dropbox 文件夹来做这是一种临时的方式。但是,这种方法效果不佳,因为他使用的是不同版本的 Java(因为他运行的是 Mac,而我使用的是 Windows)。为了让我运行该项目,我必须清除他创建的所有 .class 文件,这些文件将出现在我的计算机上,因为 Dropbox 只是共享所有文件。

我听说过 CVS 是一种在开发人员之间管理文件共享的方法,但听起来工作量很大。例如,我不知道如何获得 CVS 服务器或如何使其工作。有没有一种简单直接的方法可以让我们在同一个 Java 项目上一起工作?GitHub 是答案吗?

0 投票
4 回答
6111 浏览

ios - 用于 iOS 和 OS X 开发的共享代码库

我们有一个相当丰富的电子学习应用程序,主要使用 cocos2d 构建。目前我们处于 alpha 阶段,希望设置我们的项目结构,以便我们还可以构建一个 Mac 版本以针对 Mac App Store。它大约是 cocos2d 的 80%,在 UIKit 中有一些初始屏幕,必须移植到 Mac(重写)。

从单个代码库同时针对 Mac 和 iOS 应用商店的推荐设置是什么?我假设选择是:

  1. 在同一个应用程序源代码根文件夹中创建 2 个 xCode 项目,并使用每个项目构建一个目标。这将是:Project.xcodeproj 和 ProjectMac.xcodeproj
  2. 将新的 Mac 目标添加到我们现有的 iPad 应用程序项目中,然后调整目标成员资格以获得所需的结果。这只是:Project.xcodeproj

使情况更加复杂的是,我们目前使用 cocos2d 作为 iOS 应用程序的静态库。我们还有一个名为 CoreInfrastructure 的库,其中包含我们在所有项目中使用的大量代码。最近我发现我可以创建一个项目,从同一代码库同时构建一个针对 Mac 的框架和一个针对 iOS 的库。这是通过从一个框架项目开始并添加一个目标来为 iOS 构建一个静态库来完成的。

所以只是想得到大家的意见和见解。任何人都知道在上述选择中需要注意的任何警告?任何同时为 Mac 和 iOS 应用商店构建的人愿意分享他们的结构吗?在我们的库代码上添加一个目标......这也是应用程序的方式吗?

为这两种选择进行归档和分发构建是否有任何问题?

提前致谢。

0 投票
2 回答
175 浏览

git - 特定要求的代码存储库——Git 可以提供“少量下载”吗?

我的代码目前是“开源”但不容易访问,因为它不能从存储库中获得。这个想法是通过 SourceForge 或 Github 提供它,但我愿意使用任何支持这些要求的免费站点。

项目介绍

该项目由许多模块(层次结构下的Java包org.pscode)中的代码和一些依赖项(例如50兆的交叉编译插件,5-10兆的MP3..)中的代码组成。该项目包含许多独立的应用程序,如面向开发人员的交叉编译编译器和面向最终用户的音乐点唱机。但是也有单个类(例如BigClip可以容纳大声音剪辑的类),它们在不是来自项目本身的其他应用程序中很有用。虽然有些包实际上是“自包含的”(例如JaNeLA),但其他包是在一系列现有应用程序中使用的组件。

我机器上存在的整个项目已经在推动 200 Meg。

作为一个想要播放长剪辑的开发人员,我会犹豫下载 200 多兆字节的项目,只是为了得到一个代码短到可以在 SO 上发布的课程。

代码库要求

  • 一个代码库/共享系统,允许用户只下载他们需要的部分。
  • 如果它由主项目的许多独立部分组成,它们会自动下载。
  • 提供一种自动方式来计算(以向用户显示)每个“子”项目需要多少下载量。好的,这不是我的选择“成败”的要求,但它会非常方便。

我一直在看 Git,因为它似乎比旧形式的 CVS 有很多进步,并且正在阅读Git For Eclipse Users并开始阅读分布式版本控制系统的第 3 点。

鉴于没有主存储库,很明显存储库必须完整地存在于 DVCS 中的每个节点上。..

这让我很担心,但我不确定我是否完全理解它,或者 Git 中是否有另一种机制来提供所需的行为。

问题)

Git 能满足上述要求吗?

另一方面,对于大多数开发人员来说,这是一个“非问题”吗?如果人们通常会下载 200 meg 的项目只是为了获得 3 Kb 的代码来解析逗号分隔值的文件,那么也许我什么都不担心。

0 投票
2 回答
188 浏览

windows-phone-7 - 使用 SQL 数据库将代码从 WP7.5 移植到 Windows 8 的推荐方法?

我有一个现有的 Windows Phone 7.5 应用程序。此应用程序使用本地数据库将数据存储在手机上(WP 中本地数据库的概述)。正因为如此,我的业务模型都装饰了属性以支持 SQL 表中的存储,例如 [Column]、[Table]...

我正在考虑将此应用程序移植到 Windows 8。我想知道在更改存储时重用业务模型的好方法是什么(WinRT 不支持 SQL 数据库)。我想分享两个平台之间的商业模式的源代码。

谢谢,,

0 投票
1 回答
982 浏览

c# - wcf项目中共享公共类

这个类应该可以在

  1. 服务项目
  2. wcf-客户端项目
  3. 他们作为参考的另一个。在这个公共项目中,我无法生成服务引用。

我想,我不能生成MyCommonClassServiceReferences如何将类标记为不可序列化?在属性中有IgnoreDataMemberAttribute. 我也尝试重用位于 common 项目中的 MyCommonClass 类型,但它仍然生成

更新

换句话说:如果在 ServiceOperation 中使用了某种类型,它会自动生成到 wsdl 文档中。如何禁用它?(我不希望它在 wcf 客户端)

0 投票
1 回答
46 浏览

sharing - 防止共享代码中的蠕变和依赖性

在工作中,我们有几个 C# 项目,有时我们会在它们之间共享类和函数。但是,有时该代码嵌入在类中,这些类会带来人们不想为了一个功能而处理的依赖项。所以最终将一两个函数或类复制并粘贴到他们的代码中。

这让我觉得很糟糕。

但是,如果我们将其分解为它自己的共享工具项目以避免出现问题,那么有人会添加他们自己的函数和类,很快我们就会回到原来的位置。或者他们最终在另一个他们不知道的项目中编辑代码并破坏代码。

如何正确分享但不踩到对方的脚趾?复制粘贴到底是不是正确的选择?