簡體   English   中英

C#在解決方案中打開文件

[英]C# opening file in a solution

我認為這個問題對你們大多數人來說可能是微不足道的,但不知何故我找不到答案......所以,我在這個解決方案中有一個Visual Studio 2008解決方案foo和一個項目欄。 在我的酒吧項目中,我有一個名為baz的目錄,它看起來像這樣:

foo dir
 |
 +-> bar dir
      |
      +-> baz dir
           |
           +-> asd file

現在我想在bar-project中打開我的“asd文件”,但需要“asd文件”的確切路徑,我該如何找到它? 我試過簡單的“baz \\ asd”,但它不起作用。

謝謝!

Ĵ

您想在運行時在C#應用程序中打開bar -project中的文件嗎? 有幾種方法可以實現這一點,我會給你最簡單的。

  1. 轉到解決方案資源管理器中的 asd 屬性
  2. 構建操作設置為Content
  3. Copy always復制到輸出目錄設置為Copy always (或者Copy if newer

然后,您可以在C#中按如下方式引用該文件(假設您的程序不會將當前工作目錄從可執行目錄更改):

using (StreamReader reader = new StreamReader(@"baz\asd"))
{
    // ...
}

其他方式涉及使用嵌入式資源 ,這不是最簡潔的解決方案。

如果您的意思是在運行時打開,程序實際上在bar \\ bin \\ debug(或bar \\ bin \\ release)中運行,因此您需要考慮到這一點。

通常我會做類似的事情:

#if DEBUG
filename = @"..\..\baz\asd";
#else
filename = @"baz\asd";
#endif

文件的相對位置是解決方案目錄。 因此,要在VS IDE中打開它,可以在“命令”窗口或“標准”工具欄上的“查找”文本框中鍵入(Ctrl-D):

>open bar\baz\asd

如果要在運行時執行此操作,則需要使用應用程序分發源文件,因為沒有任何保證它將在解決方案樹附近的任何位置執行。

如果你想從VS加載項中做到這一點,我確信有一個代表解決方案的類,你可以使用它來枚舉其中的項目,然后枚舉bar項目中的文件條目。

將一個簡單的Target添加到Build文件中可能會更好(項目文件 - 用於C#的csproj)。 在文本模式下打開csproj文件並添加:


<Target Name =“AfterBuild”> <Copy SourceFiles =“<SourceFileLocationRelativeToPrjFile> \\ <SourceFilename>”DestinationFiles =“<SourceFilename>”/>
</目標>

MS Build會將文件復制到正確的位置 - 無論您的配置(調試/發布)是什么,這都是正確的文件夾。

如果你對發布感興趣,你需要加倍努力,但我想,你現在不要求它 - 所以,保持簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM