我有一个Visual Studio 2010解决方案,设置为在Debug x86中构建。因此,Visual Studio将输出路径设置为\ bin \ x86 \ Debug,这似乎足够合理。
该解决方案包含约50个项目;启动项目是一个WCF项目。
当我进行构建时,我希望所有输出dll都转到\ bin \ x86 \ Debug,因为这是在项目设置中设置的。但奇怪的是,我看到在\ bin中的bin \ x86 \ Debug 和中创建了dll。如果输出路径未设置为该目录,为什么Visual Studio会在\ bin中放入任何dll?似乎所有dll都转到\ bin \ x86 \ Debug,除了启动项目之外的所有dll 都进入\ bin。知道为什么会这样做吗? (我们有其他解决方案不使用WCF,他们没有这个问题。)
另一个烦恼是,如果我从Visual Studio运行服务,然后尝试在Web浏览器中访问我的服务,转到http://localhost:1240/MyService.svc,它不起作用,因为启动项目dll是/ bin缺少。因此,我必须手动将这个dll从\ bin \ x86 \ Debug复制到\ bin,以便找到所有dll并且服务正常运行。 (我们当然可以添加一个自定义的构建后步骤来执行复制,但您认为有更好的方法!)
对于那些在WCF项目上工作的人,是否将输出路径保留在\ bin \ x86 \ Debug? (也许有一种方法可以配置服务,例如在web.config或.svc文件中,以便它知道二进制文件位于\ bin \ x86 \ Debug而不是\ bin?)或者您是否将输出路径更改为\ bin以便您可以直接从Visual Studio运行您的服务?
答案 0 :(得分:8)
如果打开WCF Hosting项目的属性页面并转到选项卡Build,则在此标记的Output部分下面有一个文本框,其中包含输出二进制文件的位置。
对于WCF项目,二进制文件应该转到bin目录,而不管构建类型如何(如Debug,Release)。确保已正确配置此值。
需要为每个构建类型\配置配置值。
答案 1 :(得分:-2)
如果您出于某种原因需要不同文件夹中不同构建配置的不同输出,您可以像第一次那样指定它们,并使用从指定输出文件夹复制到bin的post build事件命令行。 喜欢:
- untested code -
COPY/Y "$(OutDir)\*.*" "$(SolutionDir)$(ProjectName)\bin\"
- untested code -