c# 获取解决方案中的其他项目目录



所以,我有一个解决方案,用于分离关注点/逻辑的项目......数据库上下文、服务、UI 等。 我想要的是能够从数据库上下文项目中获取 UI 项目中的文件夹位置,以便在通过 EF 更新 SQLite 时使用。 我可以轻松地在我的 UI 项目中获取 bin 文件夹,并且在技术上工作正常,因为项目运行时将使用 bin 文件夹 SQLite 文件,但 bin 文件不包含在源代码管理中,因此将数据库文件驻留在 bin 文件夹之外,在构建时复制到 bin 文件只是一种更好的方法。

_connectionString = $"Data Source={AppContext.BaseDirectory}\Sqlite\SomeName\SomeName.sqlite";

这将在执行 EF 合并时将 bin 生成器作为基目录。 我确实尝试了各种方法来获得它,但除了硬编码之外,我无法实现我想要的。硬编码显然不是一种选择。是否可以获取解决方案位置,然后使用它导航到解决方案中的不同项目? .Net Core或.Net Framework方法都可以。

澄清一下,我希望我的数据上下文项目在另一个项目文件夹中创建 SQLite 数据库文件,并且我希望该文件不在运行时生成的/bin 文件夹中。我需要一种方法来动态获取解决方案中另一个项目的位置。

假设我有一个由 2 个项目组成的解决方案。

  1. 数据库上下文项目
  2. 用户界面/接口项目

正如您所期望的那样,UI/API项目具有一堆文件夹。我想获取其中一个的位置,以便在我的连接字符串中使用。 并且没有 web 配置不适合,因为它们无论如何都不是动态的,其次它们被弃用并且有充分的理由,但使用 json 配置文件也不是一种选择,因为它仍然不是动态的。 配置文件适用于始终位于同一位置的数据库,并且您的项目位置无关紧要。但在这种情况下,如果其他人提取我的源代码,它就不会在同一个目录中,SQLite 文件是本地的,而不是在线托管的。

我试图得到的是我的解决方案的路径,它是 c:/projects/Solution 还是 d:/c#/random/StackOverflower/Projects/Solution

我能得到的是c:/projects/Solution/UI/Bin/Debug

我的目的是得到c:/projects/Solution/UI/Sqlite/

我认为您正在项目文件中查找msbuild任务(特别是复制任务(。

https://msdn.microsoft.com/en-us/library/3e54c37h.aspx

前段时间我写了一篇关于它的博客文章。我已经停止写博客,所以代码部分由于某种原因丢失了,所以我把它放在这里。

https://torontoprogrammers.blogspot.com/2014/11/msbuild-targets-and-tasks.html

<copy destinationfolder="..ReferencesLibraries" overwritereadonlyfiles="true" sourcefiles="$(OutputPath)$(AssemblyName).dll" />   
<copy destinationfolder="..ReferencesLibraries" overwritereadonlyfiles="true" sourcefiles="$(OutputPath)$(AssemblyName).pdb" />    
<copy destinationfolder="..ReferencesLibraries" overwritereadonlyfiles="true" sourcefiles="$(OutputPath)$(AssemblyName).xml" />  

相关内容

最新更新