使用对另一个项目的引用“构建”WCF REST服务时出现的问题

时间:2011-07-26 14:23:35

标签: c# .net wcf web-services build-process

我有两个项目的解决方案:

  1. DataAccessLayer项目 - 一个自解释的类库,它引用了.NET MySql连接器dll并能够将其设置保存到设置文件中。
  2. WebService项目 - 具有WCF REST服务,该服务具有对DataAccessLayer项目的引用。
  3. 在构建“WebService”项目后(在“Release”模式下),我无法在“WebService”Release文件夹中找到DataAccessLayer.dll.config文件和MySql.Data.dll文件。

    更新 好吧,经过一些实验,我想在“DataAccessLayer”项目中将“MySql.Data.dll”引用的“Copy Local”属性设置为true,将其复制到构建时的DataAccessLayer“Release Folder”。但是,在构建“WebService”项目时 - 我在“WebService”的bin \ Release文件夹中看到的唯一文件是“DataAccessLayer.dll”文件,“WebService.dll”文件及其相对“.pdb”文件。 (仍然没有MySql.Data.dll和DataAccessLayer.dll.config)。

    更新2: 好的,不确定是否有更优雅或更好的解决方案,但我最终在“WebService”项目中添加了“Post-Build”事件(项目属性 - >构建事件),该项目从“DataAccessLayer”输出复制两个文件目录到“WebService”输出目录,方式如下:

    copy "$(SolutionDir)DataAccessLayer\bin\$(ConfigurationName)\MySql.Data.dll" "$(TargetDir)" &
    copy "$(SolutionDir)DataAccessLayer\bin\$(ConfigurationName)\DataAccessLayer.dll.config" "$(TargetDir)"
    

    如果有人想到更通用的方法,请告诉我!

    谢谢,

    米奇

1 个答案:

答案 0 :(得分:0)

我假设DataAccessLayer项目引用了MySQL.Data.dll。如果是这种情况,请转到参考并打开其属性。应该有一个选项说Copy Local,仔细检查它是否设置为true(我认为它默认为false)。如果这不是问题,您也可以尝试在WebService项目中引用dll,它应该复制它。或者您可以将DLL添加到GAC,或者在最坏的情况下,您可以随时手动复制文件(只要它在bin目录中,它应该找到它),但这会长期存在。