質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.90%

Windows.Storageの参照の追加について(C# コンソールアプリケーション)

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 270

Wish_N

score 31

現在、キャッシュ情報を利用したアプリケーションの作成を下記の環境で行っています。

開発環境:VisualStudio2019
フレームワーク:.NET Flamework4.7.2
プロジェクト種類:コンソールアプリケーション

StorageFolderクラス等を使用したいため、
using Windows.Storage; を追加したいのですが、参照を見ても、nugetを見ても見つかりません。

プロジェクトがコンソールアプリケーションの場合は、参照に追加することはできないのでしょうか。

必要な情報があれば追記いたします。

ご回答お願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

Windows Runtime API使う場合は、Microsoft.Windows.SDK.ContractsをNuGetしてください。

何でもかんでも使えるというわけではないと思いますが、
ファイルとフォルダーの列挙と照会 - UWP applications | Microsoft Docs
のサンプルは実行できました。


あまり詳しくないので何が問題なのかわからないです^^;
同じようにコンソールアプリを.NET Flamework4.7.2で作ったのですが。

Program.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Windows.Storage;

namespace Questions277082
{
    class Program
    {
        static async Task Main()
        {
            StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
            StringBuilder outputText = new StringBuilder();

            IReadOnlyList<StorageFile> fileList = await picturesFolder.GetFilesAsync();

            outputText.AppendLine("Files:");
            foreach(StorageFile file in fileList)
            {
                outputText.Append(file.Name + "\n");
            }

            IReadOnlyList<StorageFolder> folderList = await picturesFolder.GetFoldersAsync();

            outputText.AppendLine("Folders:");
            foreach(StorageFolder folder in folderList)
            {
                outputText.Append(folder.DisplayName + "\n");
            }

            Console.WriteLine(outputText);
            Console.ReadKey();
        }
    }
}

Questions277082.csproj

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{C9C0ADED-9797-41F4-8BFC-A0A770D3AC5A}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>Questions277082</RootNamespace>
    <AssemblyName>Questions277082</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Core" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="Microsoft.CSharp" />
    <Reference Include="System.Data" />
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Xml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <ItemGroup>
    <None Include="App.config" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Windows.SDK.Contracts">
      <Version>10.0.19041.1</Version>
    </PackageReference>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/12 21:54

    Microsoft.Windows.SDK.ContractsをNuGetしました。
    追加後にusingに追加するのは、using Windows.Storage; であっていますでしょうか?
    NuGet後でも赤線は消えず、StorageFolderクラス等は使用できない状況にあります。

    キャンセル

  • 2020/07/12 22:54

    追記いただきありがとうございます。
    追記いただいたソースをコピーしてプロジェクトを作ったのですが、
    using Windows.Storage; は使えていないです。
    Windows Runtime API使う場合は、Microsoft.Windows.SDK.ContractsをNuGetも行いました。
    原因として考えられることを教えていただきたいです。
    Web上でも同様の事象は発見できなかったため、ヒント等でも教えていただけると幸いです。

    キャンセル

  • 2020/07/12 23:35 編集

    [デスクトップ アプリで Windows ランタイム API を呼び出す | Microsoft Docs](https://docs.microsoft.com/ja-jp/windows/apps/desktop/modernize/desktop-to-uwp-enhance

    > NuGet オプションを使用するには
    これがMicrosoft.Windows.SDK.Contractsを入れるだけの新しい方法です。
    Windows 10のバージョンによって入れるMicrosoft.Windows.SDK.Contractsのバージョンが変わるようです。

    > 必要な参照を手動で追加するには
    こちらは古い方法ですが、前にやったときはかなり苦戦した記憶があります。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る