2

我遵循 CSLA.NET for Silverlight 模式,为业务对象程序集使用相同的文件名。例如:

CSLA.dll               // .NET assembly
MyProject.Entities.dll // .NET assembly
CSLA.dll               // Silverlight assembly
MyProject.Entities.dll // Silverlight assembly

这样做是为了您可以在 .NET 项目中使用单个代码文件,将其“文件链接”到 Silverlight 项目并让两个程序集使用相同的代码(根据需要在功能上编译出 .NET 和 Silverlight)。

相同的程序集文件名的原因是 WCF 序列化绑定只是自动工作。

我遇到的问题是我的构建服务器似乎将两个程序集放在同一个输出目录(构建服务器上的 Binaries 文件夹)并使用该目录来解析项目引用,但它得到了错误的文件(Silverlight 一个而不是 .NET 的)。

有谁知道如何处理这种情况?

编辑:

我正在运行 TFS 2010 Beta2、VS 2010 RC1、构建代理 2010 RC1

4

2 回答 2

0

Aaron Hallberg 向我提到,您可以将工作流中的 MSBuild 活动更改为不设置OutDir. 这有效,但导致 Binaries 文件夹无法获得输出的副本。

相反,我所做的是在解决方案中创建三个构建配置ClrOnlySilverlightOnly、 和WebsiteOnly. 然后在构建定义的 Process 选项卡中,我将 Items to Build 设置为构建“ 1 project(s) and 3 configuration(s)”。现在二进制文件输出如下所示:

Nightly_20100217.1\
                  \Multi Platform\
                                 \ClrOnly
                                 \SilverlightOnly
                                 \WebsiteOnly\
                                             \_Published Sites

我的单元测试和一切都运行良好。

编辑:

另一方面,已发布的网站是无效的,因为它在构建和发布时选择了错误的引用。

于 2010-02-17T20:48:32.977 回答
0

我过去使用的一种策略是对两个项目使用相同的源目录,并将平台特定文件嵌套在离散命名的子目录中,对于输出也相同,例如 bin\debug\clr 和 bin\debug\sl。它需要对项目文件进行一些手动编辑,但似乎效果很好。我不记得构建服务器有任何问题。但我可能弄错了。

于 2010-02-16T22:02:41.313 回答