2017-02-16 2 views
0

私は自分の.net core apiプロジェクトにあるxmlファイルを出力し、後でそのファイルにアクセスしようとしています。copyToOutputによって出力されたファイルにアクセスするには?

私は出力に私のproject.jsonでXML

"buildOptions": { 
"emitEntryPoint": true, 
    "copyToOutput": "myfile.xml" 
"preserveCompilationContext": true 
} 

をこのコードを持っている。そして、私はこの

public Startup(IHostingEnvironment env) 
    { 
     var path = env.ContentRootPath; 
     var filepath = Path.Combine(path, "myfile.xml"); 
     var doc = new XmlDocument(); 
     doc.Load(fileName); //throws error 
    } 

のようにアクセスしてみてくださいしかし、私はアズールでこれを実行すると、私はこれを取得エラー

FileNotFoundException - 'D:\ home \ site \ wwwroot \ myfile.xml'というファイルが見つかりませんでした。

私はすべてのバージョン、たとえばthis answerを試しましたが、運はありません。

UPDATE 1ここで

私は - 私の思考(クーズーサービスで)すべてのthinkableフォルダを参照してxmlファイルを見つけることを試みたのProgram.cs

var host = new WebHostBuilder() 
.UseKestrel() 
.UseContentRoot(Directory.GetCurrentDirectory()) 
.UseIISIntegration() 
.UseStartup<Startup>() 
.Build(); 

の私の主な方法であり、 xmlファイルはdoesn't入手アウト構築することを https://myvsts.scm.azurewebsites.net/api/vfs/site/wwwroot/

UPDATE 2

copyToOutputは、ローカルではうまく動作しますが、空白では動作しないことがわかりました。私はthisを実装してフォルダをブラウズし、私のxmlファイルは表示されませんまで私はそれを右クリックし、出版を押してください!そのようなプロジェクトの公開はそれを拾いません...

答えて

0

あなたのContentRootPathはwwwrootフォルダに設定されているようです。通常、これは wwwrootが含まれ、IHostingEnvironment.WebRootPathが "wwwroot"パスを指しているフォルダに設定されています。あなたのProgram.Mainクラスがこれを持っていることを

チェック:

var host = new WebHostBuilder() 
    .UseContentRoot(Directory.GetCurrentDirectory()) 

また、あなたはまた、「publishOptions」にこのファイルを追加する必要があります。 https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#publishoptions

"publishOptions": { 
    "include": ["myfile.xml"] 
} 
+0

私はあなたのことをよくフォローしていません:-)私は私の質問を更新しました。 XMLがビルドアウトされていない可能性がありますか? – Sturla

+0

私は「含んでいる」ことを発見しました。しかし、ブラウジング中はファイルを見つけることができません。私はまた、別のクラスライブラリにファイルを追加しようとし、それをcopyIfNewerに設定しようとしましたが、まだファイルを見つけることができません... – Sturla

+0

Hmm。もう1つの提案を追加しましたが、それはあなたがそれを理解した更新から現れます。 – natemcmaster

関連する問題