这听起来可能是个愚蠢的问题,但我还是要试一试。
所以在 Visual Studio 中,你不能有两个项目 X 和 Y,使得 X 引用 Y 和 Y 引用 X。
总的来说,出于各种原因,我完全可以理解循环依赖是如何产生问题的。
但是这样可能编译两个相互依赖的项目真的不行吗?在我看来,这一定是可能的,因为(在我看来——也许我完全对此不以为然)拥有两个相互依赖的程序集确实不是> 不同于拥有两个相互依赖的类 -- 合法且可以编译的情况。
如果您说“两个程序集不能相互依赖,因为编译器无法先编译一个程序集”,这对我来说是有意义的;除了您似乎可以在同一个程序集中为两个类设置相同的参数,而且显然编译器可以很好地处理这种情况。
基本上,我问的原因并不是我迫切希望做这件事,我知道这通常是不明智的。具体来说,我想知道,因为如果我可以有两个项目——比如 MyProjectCS 和 MyProjectVB——那会很好,这两个项目基本上作为一个单元的两个相互依赖的部分存在,并且只是分开的,因为某些部分是用 C# 和其他部分用 VB.NET 编写。
所以,我的问题是(哎呀,三倍):
最佳答案
我不知道如何在 IDE 中完成;然而,可以通过复杂的构建过程来构建。
你需要:
其中 stub 程序集 B 包含程序集 B 的公共(public)类和公共(public)方法以及相同的 AssemblyInfo.* 并引用相同的公钥。
构建顺序:
请注意,您不能在方法签名中直接循环引用类型;但是,您可以通过对象强制转换来获得有效的循环。
注意:
ilasm 可以编译真正的相互递归程序集,因为它可以以某种方式解析在编译时不存在的类型。
进一步:
aspnet_compiler 似乎能够在同一个项目中混合使用不同的语言(谁知道怎么做)。
关于c# - 是否可以在程序集级别启用 Visual Studio 中的循环依赖项?相互依赖的组件甚至可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169942/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案