我遵循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,Build Agent 2010 RC1
答案 0 :(得分:0)
我过去使用的策略是为两个项目使用相同的源目录,并将平台特定文件嵌套在离散命名的子目录中,并且对于输出例如相同。 bin \ debug \ clr和bin \ debug \ sl。它需要对项目文件进行一些手动编辑,但似乎运行良好。我不记得构建服务器有任何问题。但我可能弄错了。
答案 1 :(得分:0)
Aaron Hallberg向我提到,您可以将工作流程中的MSBuild活动更改为不设置OutDir
。这有效,但导致Binaries文件夹无法获得输出的副本。
相反,我所做的是在解决方案中制作三个构建配置ClrOnly
,SilverlightOnly
和WebsiteOnly
。然后在构建定义的Process选项卡中,我将Items设置为Build以构建“1 project(s) and 3 configuration(s)
”。现在Binaries输出如下所示:
Nightly_20100217.1\
\Multi Platform\
\ClrOnly
\SilverlightOnly
\WebsiteOnly\
\_Published Sites
我的单元测试,一切都很好。
编辑:
另一方面,已发布的网站无效,因为它在构建和发布时会选择错误的引用。