Introduction

忘備録。
.NET と .NET Framework で微妙に手順が違うのでメモ。ついでに Prism のパターンも。

How to do?

.NET

*.csproj を開き EnableDefaultApplicationDefinition を追加し、false を設定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows7.0</TargetFramework>
<Nullable>enable</Nullable>
<UseWPF>true</UseWPF>
+ <EnableDefaultApplicationDefinition>false</EnableDefaultApplicationDefinition>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="NLog" Version="5.2.8" />
</ItemGroup>

<ItemGroup>
<None Update="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>

</Project>

次に、App.xaml.cs を開き、 App クラス内に Main メソッドを追加する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Windows;

namespace Demo
{

/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{

[STAThread]
public static void Main()
{
var app = new App();
app.InitializeComponent();
app.Run();
}

}

}

.NET with Prism

前述の EnableDefaultApplicationDefinition の追加を実施する。
次に、PrismApplication を継承したクラス (ここでは Shell とする) を準備。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Windows;

using Prism.Ioc;
using Prism.Unity;

namespace Demo
{

public sealed class Shell : PrismApplication
{

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}

protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}

}

}

最後に、App.xaml.cs を開き、 App クラス内に Main メソッドを追加、Shell クラスのインスタンスを生成し、Run メソッドを実行する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Windows;

namespace Demo
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{

[STAThread]
public static void Main()
{
var shell = new Shell();
shell.Run();
}

}

}

.NET Framework

App.xaml のプロパティを開き ビルドアクションPage に変更。

xcode

次に、App.xaml.cs を開き、 App クラス内に Main メソッドを追加する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Windows;

namespace Demo
{

/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{

[STAThread]
public static void Main()
{
var app = new App();
app.InitializeComponent();
app.Run();
}

}

}