代码之家  ›  专栏  ›  技术社区  ›  TimothyP

在VS2010中为.NET 4和Silverlight 4交叉编译,而不复制文件

  •  4
  • TimothyP  · 技术社区  · 14 年前

    我们在一个解决方案中有大量的项目,主要是简单的类库(稍后通过MEF加载),目标是.NET 4.0。

    我们希望在不复制文件的情况下为.NET 4.0和Silverlight运行时编译大量这些文件。

    是否有方法创建新的Silverlight类库并从其他项目链接源文件,以便编译.NET 4.0库和Silverlight 4.0库?

    我知道.NET 4.0可以加载Silverlight 4程序集,但我还是希望编译这两个版本,而不是编译Silverlight的所有内容。

    更新: 我曾经看到过一个解决方案,其中一些项目包含到其他项目中其他文件的链接,所以当您在一个项目中更改了一个文件时,另一个项目中的文件也会更新。这就是我的意思。

    alt text http://i31.tinypic.com/33esow4.png

    解决方案的屏幕截图vialis.led.interfaces项目包含原始文件,在Silverlight项目中,我希望创建指向这些文件的链接。

    5 回复  |  直到 13 年前
        1
  •  4
  •   Reed Copsey    14 年前

    只需为Silverlight设置第二个项目,然后使用 Project->Add Existing Files... 将每个项目文件添加到Silverlight项目中。

    您还可以使用分部类来分离特定于Silverlight或特定于.NET框架的功能。(这是Prism,BTW使用的方法。)

        2
  •  7
  •   herzmeister    14 年前

    当您想要重用代码时,基本上有三个选项:

    • 通常将所有基本类库创建为Silverlight类库项目,因为它是功能集最低的框架。抛开所有引用,除了 McLyLabDLL , 系统DLL 系统.COL.DLL . 然后,您可以在任何完整的.NET项目中链接此类Silverlight库。

    • 您可以将来自其他项目的单个代码文件与 添加为链接 “功能(右键单击项目->添加现有项->将“添加”按钮更改为“添加为链接”)。这样,您就可以创建一个Silverlight项目,并从整个.NET项目中链接各个文件。但是,如果您有很多文件,并且经常在源项目中添加/删除文件和文件夹,那么这可能会变得很乏味。

    • 要解决此问题,您可以在以下位置签出项目链接器: http://msdn.microsoft.com/en-us/library/dd458870.aspx …但我自己还没试过。

        3
  •  3
  •   Marc Wittke    13 年前

    Microsoft最近发布了便携式库工具: http://msdn.microsoft.com/en-us/library/gg597391.aspx

    我一定要看看这些。

        4
  •  0
  •   sukru    14 年前

    对。在同一目录中创建两个项目,一个使用Silverlight,一个使用Regular。

    您还可以自动化这一点,.csproj文件是基于XML的。尤其是删除以下内容将使其成为常规内容:

    <ProjectTypeGuids>{A1591282-1198-4647-A2B1-27E5FF5F6F3B};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
    
        5
  •  0
  •   nlawalker    14 年前

    正如接受答案中的注释所说,您可以使用“文件”对话框中“添加”按钮上的箭头来执行“添加为链接”。

    要添加一个可能有用的小东西:请记住,Silverlight和.NET 4.0是不同的。如果您有一个而不是另一个中编译的代码,那么开发人员工具默认为Silverlight定义一个Silverlight条件编译符号,因此如果是Silverlight,您可以这样做。