96

Visual Studioのソリューションエクスプローラーで追加した画像ファイルのパスを取得しようとしていますが、その画像の相対パスを取得できませんでした。Hは私のプロジェクトのファイル構造です:

/ BulutDepoProject
    / FolderIcon
        Folder.ico
        Main.cs

私はこのような画像を得ることができます:

"C:\\Users\\Tolga\\Desktop\\BulutDepo\\BulutDepoProject\\FolderIcon\\Folder.ico" 

しかし、私は次のようなものでそれを得ることができるはずです:

"~\\FolderIcon\\Folder.ico"

正確な構文がわからないので、画像を取得できません。:(

4

7 に答える 7

60

あらゆる種類の外部ファイルを使用する場合は、プロジェクト内のフォルダーにそれらを配置する方法は確かにありますが、リソースから取得するほど有効ではありません。通常のVisualStudioプロジェクトではResources.resx、セクションの下にファイルが必要です。Propertiesそうでない場合は、独自のResource.resxファイルを簡単に追加できます。そして、そこにあらゆる種類のファイルを追加すると、ここでプロジェクトにリソースファイルを追加するためのウォークスルーに到達できます。

プロジェクトにリソースファイルを入れたら、次のように簡単に呼び出すことができます。

var myIcon = Resources.MyIconFile;

もちろん、次のusing Propertiesようなステートメントを追加する必要があります。

using <namespace>.Properties;
于 2013-10-11T10:57:06.310 に答える
44

私は少し遅れており、これがあなたが探しているものであるかどうかはわかりませんが、誰かがそれを便利だと思った場合に備えて追加したいと思いました。

これがファイル構造であると仮定します。

/BulutDepoProject
    /bin
        Main.exe
    /FolderIcon
        Folder.ico
        Main.cs

ファイルを基準にしたパスを書き込む必要がありMain.exeます。だから、あなたはアクセスしたい、Folder.icoあなたの中であなたMain.csは使うことができます:

String path = "..\\FolderIcon\\Folder.ico"

それは私にとってはうまくいったようです!

于 2015-11-21T21:30:31.520 に答える
31

「〜」を省略します。

var path = @"FolderIcon\Folder.ico";

~\ファイルシステムに関しては何の意味もありません。正しく使用されていることを確認した唯一の場所は、ASP.NETがチルダをアプリケーションのルートへの絶対パスに置き換えるWebアプリです。

通常、パスはEXEが配置されているフォルダを基準にしていると見なすことができます。また、Visual Studioの[プロパティ]タブで、画像が「コンテンツ」および「新しい場合はコピー」/「常にコピー」として指定されていることを確認してください。

于 2012-11-12T10:40:26.710 に答える
18

私も同じ問題に遭遇し、それを乗り越えることができました。それでは、私が適用した手順について説明しましょう。あなたのシナリオに合わせて説明します。

私の方法によると、相対パスを取得するには、「Path」クラスと「Assembly」クラスを使用する必要があります。

したがって、ステートメントを使用する際には、最初にSystem.IOとSystem.Reflectionをインポートします。

次に、以下のコード行を入力します。

        var outPutDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly(). CodeBase);

実際には、上記の行には、プロジェクトの出力ディレクトリのパスが格納されています(ここで、「output」ディレクトリはプロジェクトのDebugフォルダを指します)。

次に、FolderIconディレクトリをDebugフォルダにコピーします。次に、以下の行を入力します。

var iconPath = Path.Combine(outPutDirectory, "FolderIcon\\Folder.ico");

これで、この'iconPath'変数には、Folder.icoのパス全体が含まれます。あなたがしなければならないのはそれを文字列変数に格納することだけです。そのためには、以下のコード行を使用してください。

string icon_path = new Uri(iconPath ).LocalPath;

これで、このicon_path文字列変数をアイコンへの相対パスとして使用できます。

ありがとう。

于 2013-08-19T14:42:32.557 に答える
5

Visual Studioで、ソリューションエクスプローラーペインの[Folder.ico]ファイルをクリックしてください。次に、[プロパティ]ペインが表示されます。「出力ディレクトリにコピー」の動作を「新しい場合はコピー」に変更します。これにより、VisualStudioはファイルを出力binディレクトリにコピーします。

次に、相対パスを使用してファイルパスを取得するには、次のように入力します。

string pathToIcoFile = AppDomain.CurrentDomain.BaseDirectory + "//FolderIcon//Folder.ico";

お役に立てば幸いです。

于 2020-04-28T08:43:01.110 に答える
4

これを使うのが一番簡単だと思います

new Uri("pack://application:,,/FolderIcon/" + youImageICO);

または、このコードは、フォルダがルートプロジェクトにある場合、それを変更したい場合はどのマシンでも機能します...このセクションを変更するだけです@ ".. \"

public static string bingPathToAppDir(string localPath)
{
    string currentDir = Environment.CurrentDirectory;
    DirectoryInfo directory = new DirectoryInfo(
        Path.GetFullPath(Path.Combine(currentDir, @"..\..\" + localPath)));
    return directory.ToString();
}
于 2015-10-06T10:49:55.200 に答える
0

私のフォルダは私のプロジェクトのルートにあり、これを使用しました:

string sCurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

string sFile = System.IO.Path.Combine(sCurrentDirectory, @"libs\cat");

string sFilePath = Path.GetFullPath(sFile);
于 2022-02-10T06:33:43.300 に答える