2014-02-07 25 views
0

我有一个ASP.NET MVC 4 Web项目(而不是网站)解决方案。在该解决方案中,还有其他几个与单独图层有关的项目(域项目,服务项目,数据项目和快速工程项目)。即:如何在web项目解决方案中的单独项目中部署app.config visual studio

Web 
    - Domain 
    - Data 
    - ApplicationServices 
    - Quickbooks 
    - app.config 
    - web.config 

该quickbooks项目有一个app.config文件,它使用某些参数。在本地运行时,这一切都可以运行,并且quickbooks项目可以访问app.config文件以获取运行时所需的设置。

但是当我编译整个解决方案进行部署时,似乎程序无法访问这个app.config文件。

如果我查看从发布构建过程生成的最终发布包,则有一个bin文件夹,并且我在其中看到quickbooks.dll。但是app.config文件不是。

我在整个视觉工作室的构建过程领域绝对薄弱,所以请原谅我,如果这是基本的。

1.)这甚至可能,或所有的app.config文件需要在顶级Web项目?

2.)如果可能,并且我希望它是尽可能地封装quickbooks项目,那么app.config文件在构建之后应该在哪里结束?在斌?在Web根?

+0

在上面,Quickbooks是Web项目中的一个文件夹,还是Web解决方案中的单独项目? – danludwig

+0

@danludwig后者。这是Web解决方案中完全独立的项目。 –

回答

2

如果项目由另一个项目引用(在你的情况下,网络工程),它的app.config将不会被包含在发布包。当IIS(或其他)运行您的项目时,它将在您部署的项目的上下文中运行。任何引用将被加载到正在运行的项目的上下文中。

所有这一切说,如果你在你的app.config有设置,如

<appSettings> 
<add key="name" value="value"/> 
</appSettings> 

你需要有那些在你的web.config为好。这样,你引用的程序集就可以在正在运行的应用程序的上下文中访问它所需要的东西。

+0

嗯,那是我害怕的。所以不可能完全封装Quickbooks项目(它被用于多个Web解决方案中,所以不必将每个web.config中的设置放在一起,因为它们总是相同的)。此外,由于Quickbooks项目需要这些设置值,我认为我还需要检索Web项目中的设置,然后将它们作为参数传递给Quickbooks项目,因为它无法直接访问web.config,对吧? –

+1

当然 - 它可以直接访问它!无需重复设置。在你的QuickBooks项目中,当你调用'ConfigurationManager.AppSettings [“name”]' - 它会去查看web.config – Tommy

+0

谢谢@Tommy,我得到错误“名字'ConfigurationMAnager'在当前不存在上下文“,即使我有一个使用System.Configuration语句。但是我没有System.Configuration.dll参考,因此它试图使用System.dll的配置版本,我认为这是更有限的。感谢你的帮助! –

相关问题