SSDTのスキーマ比較でトラブル。エラーの詳細は
「データベースに対する View Definition アクセス許可がないため、リバース エンジニアリング操作を続行できません。」
解決方法は
データベースの「セキュリティ」→「ログイン」で対象のアカウントで右クリック→「プロパティ」→「セキュリティ保護可能なリソース」で「定義の表示」に許可をチェック
(参考)
SSDTのスキーマ比較でトラブル。エラーの詳細は
「データベースに対する View Definition アクセス許可がないため、リバース エンジニアリング操作を続行できません。」
解決方法は
データベースの「セキュリティ」→「ログイン」で対象のアカウントで右クリック→「プロパティ」→「セキュリティ保護可能なリソース」で「定義の表示」に許可をチェック
公式の解説は以下などを参考
1. IISのインストール
2. Microsoft Web Deploy のインストール
3.IIS マネージャーユーザーの追加
4. 管理サービスの委任
5. 管理サービスの起動
6. ユーザーの設定を変更
7. ファイアウォールの設定
8. その他セキュリティの設定
9. 出力ディレクトリのパーミッションの設定
10. Web配置による発行の有効化
11. Visual Studio から発行
「役割と機能の追加」からIISをインストール
以下ページからMicrosoft Web Deploy 3.6 をダウンロード
https://www.microsoft.com/ja-jp/download/details.aspx?id=43717
IIS マネージャーを開きIISマネージャーユーザーを追加
WebDeployをインストールした時点で適切な設定になっていると思いますが確認
「WDeployConfigWriter」と「WDeployAdmin」というユーザーが自動で作成されている
先ほど自動生成されたユーザー「WDeployConfigWriter」と「WDeployAdmin」の設定を変更する
「コンピューターの管理」ツールを起動しユーザーの一覧を表示する
(この設定は絶対に必要という訳ではありませんが、パスワードの期限切れである日突然デプロイが出来なくなりハマる事があります)
Windows Defender ファイアウォールの設定画面を開き、「受信の規則」→「新しい規則」からデプロイのポート(デフォルトだと8172)を追加する
ホスト先のサーバーの設定によりますが接続ポートの許可設定などを行います
例えばAWS EC2 であればセキュリティグループの「インバウンドルール」にポートの許可設定を追加します
IISマネージャー、あるいはエクスプローラーから当該ディレクトリの「アクセス許可の編集」を行います
IISマネージャーで設定したいサイト上で右クリック→展開→Web配置による発行の有効化を選択します
対象が配下のWebアプリケーションや仮想ディレクトリであっても親サイト上で行います
「発行アクセス許可を付与するユーザーを選択します」のところで先ほど作成したIISユーザーである「webdeploy」を設定します
Visual Studio のソリューションエクスプローラーで発行したいWebプロジェクトを右クリック→発行を選択します
サイト配下のアプリケーションや仮想ディレクトリに発行する場合は「サイト名」の箇所にスラッシュ区切りで当該ディレクトリを指定します
接続の検証を押下し、成功するとグリーンのチェックマークが表示されます
WebDeploy を解説してくれているサイトは結構あるのですが、ユーザーパスワードの期限やディレクトリのパーミッション権限などに言及されているのが少なく、自分がちょくちょくハマってしまうのでまとめてみました。
以上です。
エラー Web deployment task failed. (指定されたプロセス ("xxx.xxx.xxx.xxx")を使用して、リモート コンピューター ("Web Management Service") に接続しましたが、サーバーの証明書を検証できませんでした。解決する手順は以下の通りです。
このサーバーを信頼する場合は、再度接続し、信頼されていない証明書を許可してください。
詳細情報の参照先:
http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_CERTIFICATE_VALIDATION_FAILED)
| PDF Core Build | 未完成。完成すればプラットフォームに依存せずMacやLinuxでも動作する予定。 |
| GDI+ Build | .NET 2.0、C# 2 で作成。WinForms、 Web アプリケーションで動作。( WPF でも動作する) |
| WPF Build | .NET 3.5、C# 2 で作成。その名の通り WPF アプリケーションで動作。 |
| Hybrid Build | GDI+ WPF をひとつのプロジェクトで共存。ただし、動作が重くなるなど問題があり実際のアプリケーションで利用するのは非推奨。 |
using MigraDoc.DocumentObjectModel;
using MigraDoc.DocumentObjectModel.Tables;
using MigraDoc.Rendering;
using System.IO;
using System.Web.Mvc;
namespace MigraDocSample.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
// フォントリゾルバーのグローバル登録
PdfSharp.Fonts.GlobalFontSettings.FontResolver = new JapaneseFontResolver();
//ドキュメント作成
Document document = new Document();
document.Info.Title = "Hello, MigraDoc";
document.Info.Subject = "This is MigraDoc Sample.";
document.Info.Author = "Author";
document.DefaultPageSetup.LeftMargin = Unit.FromCentimeter(2);
document.DefaultPageSetup.RightMargin = Unit.FromCentimeter(2);
document.DefaultPageSetup.TopMargin = Unit.FromCentimeter(10);
document.DefaultPageSetup.BottomMargin = Unit.FromCentimeter(5.5);
//表紙セクション作成
Section sectionCover = document.AddSection(); //Sectionを追加
Font fontCoverTitle = new Font("yumin",30); //登録したフォント
fontCoverTitle.Underline = Underline.Single;
Paragraph paragraphCover = sectionCover.AddParagraph(); //Paragraphを追加
paragraphCover.AddFormattedText("表紙タイトル",fontCoverTitle);
paragraphCover.Format.SpaceBefore = "3cm";
paragraphCover.Format.SpaceAfter = "3cm";
paragraphCover.Format.Alignment = ParagraphAlignment.Center;
Font fontDate = new Font("yumin", 8);
Paragraph paragraphDate = sectionCover.AddParagraph();
paragraphDate = sectionCover.AddParagraph();
paragraphDate.AddFormattedText("Rendering date: ", fontDate);
paragraphDate.AddDateField();
paragraphDate.Format.Alignment = ParagraphAlignment.Right;
//メインセクション作成
Section sectionMain = document.AddSection();
sectionMain.PageSetup.HeaderDistance = Unit.FromCentimeter(2);
sectionMain.PageSetup.FooterDistance = Unit.FromCentimeter(1.5);
sectionMain.PageSetup.StartingNumber = 1;
//ヘッダテーブル作成
Table tableHeader = new Table();
tableHeader.Borders.Visible = true;
tableHeader.TopPadding = 0;
tableHeader.BottomPadding = 5;
//3列作成
var columnHeader = tableHeader.AddColumn(Unit.FromCentimeter(6));
columnHeader.Format.Alignment = ParagraphAlignment.Left;
columnHeader = tableHeader.AddColumn(Unit.FromCentimeter(3));
columnHeader.Format.Alignment = ParagraphAlignment.Right;
columnHeader = tableHeader.AddColumn(Unit.FromCentimeter(8));
columnHeader.Format.Alignment = ParagraphAlignment.Left;
var fontHeaderTitle = new Font("yumin", 18);
fontHeaderTitle.Underline = Underline.Single;
var fontHeader = new Font("yumin", 10);
var para = new Paragraph();
//1行目
para.AddFormattedText("FIFAワールドカップ", fontHeaderTitle);
var row = tableHeader.AddRow();
row.Height = 30;
row.Cells[0].Add(para);
row.Cells[0].MergeRight = 2;
row.Cells[0].Format.Alignment = ParagraphAlignment.Center;
//2行目
row = tableHeader.AddRow();
para = row.Cells[1].AddParagraph();
para.AddFormattedText("開始年", fontHeader);
para = row.Cells[2].AddParagraph();
para.AddFormattedText("1930年", fontHeader);
//3行目
row = tableHeader.AddRow();
para = row.Cells[1].AddParagraph();
para.AddFormattedText("主催", fontHeader);
para = row.Cells[2].AddParagraph();
para.AddFormattedText("FIFA", fontHeader);
//4行目
row = tableHeader.AddRow();
para = row.Cells[1].AddParagraph();
para.AddFormattedText("地域", fontHeader);
para = row.Cells[2].AddParagraph();
para.AddFormattedText("世界", fontHeader);
//5行目
row = tableHeader.AddRow();
para = row.Cells[1].AddParagraph();
para.AddFormattedText("参加チーム数", fontHeader);
para = row.Cells[2].AddParagraph();
para.AddFormattedText("32(本大会)", fontHeader);
//6行目
row = tableHeader.AddRow();
para = row.Cells[1].AddParagraph();
para.AddFormattedText("出典", fontHeader);
para = row.Cells[2].AddParagraph();
para.AddFormattedText("https://ja.wikipedia.org/wiki/FIFAワールドカップ", fontHeader);
sectionMain.Headers.Primary.Add(tableHeader); //sectionにヘッダーを追加
//本文作成
var fontMainTitle = new Font("yumin", 14);
fontMainTitle.Underline = Underline.Dash;
var fontMain = new Font("yumin", 10);
//1段落目(英文は英文のルールに従って改行される)
var paraMain = document.LastSection.AddParagraph();
paraMain.Format.Borders.Visible = true;
paraMain.Format.RightIndent = Unit.FromCentimeter(5);
paraMain.AddFormattedText("English\n",fontMainTitle);
paraMain.AddLineBreak();
paraMain.Format.Font = fontMain;
paraMain.AddText(Sample.English);
paraMain.AddLineBreak();
//2段落目(日本語文は改行されずに)
paraMain = document.LastSection.AddParagraph();
paraMain.Format.Borders.Visible = true;
paraMain.Format.RightIndent = Unit.FromCentimeter(5);
paraMain.AddFormattedText("日本語コンテンツ\n", fontMainTitle);
paraMain.AddLineBreak();
paraMain.Format.Font = fontMain.Clone();
paraMain.AddText(Sample.Japanese);
paraMain.AddLineBreak();
//3段落目
paraMain = document.LastSection.AddParagraph();
paraMain.Format.Borders.Visible = true;
paraMain.Format.RightIndent = Unit.FromCentimeter(5);
paraMain.AddFormattedText("日本語コンテンツ(1文字ずつ)\n", fontMainTitle);
paraMain.AddLineBreak();
paraMain.Format.Font = fontMain.Clone();
foreach (char c in Sample.Japanese)
{
paraMain.AddFormattedText(c.ToString(), fontMain);
}
paraMain.AddLineBreak();
document.LastSection.AddPageBreak(); //改ページ
//テーブル表記
paraMain = document.LastSection.AddParagraph();
paraMain.AddFormattedText("歴代大会結果", fontMainTitle);
Table tableResult = new Table();
tableResult.Borders.Visible = true;
tableResult.Rows.Height = 25;
//7列作成
var columnResult = tableResult.AddColumn(Unit.FromCentimeter(0.8));
columnResult = tableResult.AddColumn(Unit.FromCentimeter(1.8));
columnResult = tableResult.AddColumn(Unit.FromCentimeter(3.1));
columnResult = tableResult.AddColumn(Unit.FromCentimeter(0.5));
columnResult = tableResult.AddColumn(Unit.FromCentimeter(3.1));
columnResult = tableResult.AddColumn(Unit.FromCentimeter(3.8));
columnResult = tableResult.AddColumn(Unit.FromCentimeter(3.1));
//ヘッダ1行目
row = tableResult.AddRow();
para = row.Cells[0].AddParagraph(); para.AddFormattedText("回", fontMain);
para = row.Cells[1].AddParagraph(); para.AddFormattedText("開催年", fontMain);
para = row.Cells[2].AddParagraph(); para.AddFormattedText("開催国", fontMain);
para = row.Cells[3].AddParagraph();
para = row.Cells[4].AddParagraph(); para.AddFormattedText("決勝戦", fontMain);
row.Cells[4].MergeRight = 2;
row.Cells[0].MergeDown = 1;
row.Cells[1].MergeDown = 1;
row.Cells[2].MergeDown = 1;
row.Cells[3].MergeDown = 1;
//ヘッダ2行目
row = tableResult.AddRow();
para = row.Cells[4].AddParagraph(); para.AddFormattedText("優勝", fontMain);
para = row.Cells[5].AddParagraph(); para.AddFormattedText("結果", fontMain);
para = row.Cells[6].AddParagraph(); para.AddFormattedText("準優勝", fontMain);
foreach (var result in Sample.Results)
{
row = tableResult.AddRow();
if (result.Organized)
{
para = row.Cells[0].AddParagraph(); para.AddFormattedText(result.Number.ToString(), fontMain);
para = row.Cells[1].AddParagraph(); para.AddFormattedText(result.Year.ToString() + "年", fontMain);
para = row.Cells[2].AddParagraph(); para.AddFormattedText(result.Host, fontMain);
para = row.Cells[3].AddParagraph();
para = row.Cells[4].AddParagraph(); para.AddFormattedText(result.Champion, fontMain);
para = row.Cells[5].AddParagraph(); para.AddFormattedText(result.FinalScore, fontMain);
para = row.Cells[6].AddParagraph(); para.AddFormattedText(result.RunnersUp, fontMain);
}
else
{
para = row.Cells[1].AddParagraph(); para.AddFormattedText(result.Year.ToString() + "年", fontMain);
para = row.Cells[4].AddParagraph(); para.AddFormattedText(result.NotOrganizedReason, fontMain);
row.Cells[4].MergeRight = 2;
row.Cells[4].Format.Alignment = ParagraphAlignment.Center;
}
}
document.LastSection.Add(tableResult);
//フッター作成
var paraFooter = new Paragraph();
paraFooter.AddPageField();
paraFooter.AddText(" of ");
paraFooter.AddNumPagesField();
paraFooter.AddText(" Page");
paraFooter.Format.Alignment = ParagraphAlignment.Center;
sectionMain.Footers.Primary.Add(paraFooter);
//レンダリングしてPDFを出力
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(true);
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
using (MemoryStream ms = new MemoryStream())
{
pdfRenderer.PdfDocument.Save(ms);
return File(ms.ToArray(), "application/pdf", "sample.pdf");
}
}
}
}
using PdfSharp.Fonts;
using System;
using System.IO;
using System.Reflection;
namespace MigraDocSample
{
// 日本語フォントのためのフォントリゾルバー
public class JapaneseFontResolver : IFontResolver
{
private static readonly string YUMIN_TTF =
"MigraDocSample.fonts.YUMIN.TTF";
public byte[] GetFont(string faceName)
{
switch (faceName)
{
case "YUMIN":
return LoadFontData(YUMIN_TTF);
}
return null;
}
public FontResolverInfo ResolveTypeface(
string familyName, bool isBold, bool isItalic)
{
var fontName = familyName.ToLower();
switch (fontName)
{
case "yumin":
return new FontResolverInfo("YUMIN");
}
// デフォルトのフォント
return PlatformFontResolver.ResolveTypeface("Arial", isBold, isItalic);
}
// 埋め込みリソースからフォントファイルを読み込む
private byte[] LoadFontData(string resourceName)
{
var assembly = Assembly.GetExecutingAssembly();
string[] names = assembly.GetManifestResourceNames();
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
{
if (stream == null)
throw new ArgumentException("No resource with name " + resourceName);
int count = (int)stream.Length;
byte[] data = new byte[count];
stream.Read(data, 0, count);
return data;
}
}
}
}
Sample.XXXはサンプル用のデータです。bcdedit /set hypervisorlaunchtype auto
using Microsoft.Build.Evaluation;
Project project = new Project(projectFileName);
if (!project.Items.Any(x => x.ItemType == "Compile" && x.UnevaluatedInclude == generatedFileName))
{
project.AddItem("Compile", generatedFileName);
project.Save();
}
等価なプロジェクト (グローバル プロパティとツール バージョンが同じプロジェクト) がプロジェクト コレクションのパスxxxに既に存在します。 等価なプロジェクトをこのプロジェクト コレクションに読み込むには、最初にこのプロジェクトをアンロードしてください。
ProjectCollection.GlobalProjectCollection.UnloadProject(project);
【msdn】
Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト
http://msdn.microsoft.com/ja-jp/library/dd547590.aspx
【どっとねっとふぁん】様
WebアプリケーションプロジェクトとWebサイトプロジェクト
http://blogonos.wordpress.com/2008/01/21/
「新しいプロジェクト」の場合は
ソリューションファイル
C:\Users\<ユーザ名>\Documents\Visual Studio 2012\Projects\hoge\hoge.sln
コーディングしたファイル
C:\Users\<ユーザ名>\Documents\Visual Studio 2012\Projects\hoge\hoge
「新しいWebサイト」の場合は
ソリューションファイルは
C:\Users\<ユーザ名>\Documents\Visual Studio 2012\Projects\hoge\hoge.sln
コーディングしたファイルは
C:\Users\<ユーザ名>\Documents\Visual Studio 2012\WebSites\hoge