1. 빌드하는 모드가 Debug모드인지 확인할 것.


2. 도구 / 옵션 / 디버깅 / 일반에 출력 창의 모든 텍스트를 [직접실행]창으로 리다이렉션 체크해제 확인

(Menu > tools > options > debugging > General > Redirect all output window text to the immediate window (NOT Checked)






2. 프로젝트 설정 페이지에서 빌드, 설정은 빌드, DEBUG 상수 정의, TRACE 상수 정의 확인 

(Project Properties > Build > Define DEBUG constant / Defile TRACE constatnt are all checked.




3. 출력 창에서 마우스 오른쪽 버튼 눌러 프로그램 출력 체크 확인 (이걸 몰라서 헤멨다 아오..)




4. 기타 App.config 에 이런거 있어도 안되고.

  <system.diagnostics>

    <trace>

      <listeners>

        <!-- This next line is the troublemaker. If it is there delete it-->

        <clear/>

      </listeners>

    </trace>

  </system.diagnostics>





'C#' 카테고리의 다른 글

GDI+ Bitmap Rotaion  (0) 2019.02.19
WPF RichText에서 HTML 표시하기  (2) 2019.02.09
WPF, Template Select 하기  (0) 2018.05.29
WPF MVVM 샘플코드  (0) 2018.05.28
doxygen 설치 및 설정  (0) 2018.05.14




C# WPF, 지난번 포스트 소스에 연결됩니다.

상황에 따라, 표시되는 템플릿이 자동으로 지정되게끔 만들 수 있네요.


SubjectSelectDataTemplate.cs

using System.Windows;

using System.Windows.Controls;

 

namespace WPF_MVVM_SAMPLE01

{

    public class SubjectSelectDataTemplate : DataTemplateSelector

    {

        public override DataTemplate SelectTemplate(object item, DependencyObject container)

        {

            Score score = item as Score;

            FrameworkElement el = container as FrameworkElement;

            return (DataTemplate)el.FindResource(score.SCORE > 60 ? "DataTemplate3" : "DataTemplate4");

        }

    }

}



TemplateSelectWindow.xaml

 

<Window x:Class="WpfApp1.TemplateSelectWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"       

        xmlns:local="clr-namespace:WPF_MVVM_SAMPLE01"

        mc:Ignorable="d"

        Title="TemplateSelectWindow" Height="450" Width="800">

    <Window.DataContext>

        <local:ItemViewModel></local:ItemViewModel>

    </Window.DataContext>

    <Window.Resources>

        <local:SubjectSelectDataTemplate x:Key="SubjectSelectDataTemplate"></local:SubjectSelectDataTemplate>

    </Window.Resources>

    <DockPanel>

        <ListBox ItemsSource="{Binding Items}" ItemTemplateSelector="{StaticResource SubjectSelectDataTemplate}" ></ListBox>

    </DockPanel>

</Window>



Dictionary1.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:local="clr-namespace:WPF_MVVM_SAMPLE01">

    <DataTemplate x:Key="DataTemplate1">

        <TextBlock Text="{Binding SUBJECT}"></TextBlock>

    </DataTemplate>

    <DataTemplate x:Key="DataTemplate2">

        <Grid >

            <Rectangle HorizontalAlignment="Left" Height="30" Width="{Binding SCORE}" StrokeThickness="1" Fill="Red"></Rectangle>

            <TextBlock Text="{Binding SCORE}"></TextBlock>

        </Grid>

    </DataTemplate>

    <DataTemplate x:Key="DataTemplate3">

        <Grid>

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="150"></ColumnDefinition>

                <ColumnDefinition Width="150"></ColumnDefinition>

            </Grid.ColumnDefinitions>

            <TextBlock Grid.Column="0" Text="{Binding SUBJECT}"></TextBlock>

            <Rectangle Grid.Column="1" HorizontalAlignment="Left" Height="30" Width="{Binding SCORE}" StrokeThickness="1" Fill="Red"></Rectangle>

            <TextBlock Grid.Column="1" Text="{Binding SCORE}"></TextBlock>   

        </Grid>

    </DataTemplate>

    <DataTemplate x:Key="DataTemplate4">

        <Grid>

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="150"></ColumnDefinition>

                <ColumnDefinition Width="150"></ColumnDefinition>

            </Grid.ColumnDefinitions>

            <TextBlock Grid.Column="1" Text="{Binding SUBJECT}"></TextBlock>

            <Rectangle Grid.Column="0" HorizontalAlignment="Left" Height="30" Width="{Binding SCORE}" StrokeThickness="1" Fill="Red"></Rectangle>

            <TextBlock Grid.Column="0" Text="{Binding SCORE}"></TextBlock>

        </Grid>

    </DataTemplate>

 

</ResourceDictionary>



소스는 여기 올려뒀습니다. https://github.com/erith/WPF_SAMPLES/tree/master/WpfApp1

WPF에서 MVVM으로 데이터의 출력형태 템플릿을 미리 확인할 수 있습니다,



직장 동료분에게 잠깐 블렌드 사용법을 배웠는데, 기능이 막강합니다. WPF 프로그램 디자인시에는 필수 프로그램이네요. DataContext 설정시, 디자인 타임에, 설정된 템플릿의 형태를 미리 확인할 수 있어 참 편리합니다.



BLEND 실행화면


주요 소스입니다.


MainWindow.xaml

<Window x:Class="WPF_MVVM_SAMPLE01.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:WPF_MVVM_SAMPLE01"

        mc:Ignorable="d"       

        Title="MainWindow" Height="250" Width="350"       

        >

    <Window.DataContext>

        <local:ItemViewModel></local:ItemViewModel>

    </Window.DataContext>

   

    <DockPanel>

        <ListView Width="350" ItemsSource="{Binding Items}" ItemTemplate="{DynamicResource DataTemplate1}" DockPanel.Dock="Top">

            <ListView.View>

                <GridView>

                    <GridViewColumn Header="SUBJECT" Width="150" CellTemplate="{StaticResource DataTemplate1}" ></GridViewColumn>

                    <GridViewColumn Header="SCORE" Width="180"  CellTemplate="{StaticResource DataTemplate2}"></GridViewColumn>

                </GridView>

            </ListView.View>

        </ListView>

    </DockPanel>

</Window>


Dicionary1.xaml


<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

                    xmlns:local="clr-namespace:WPF_MVVM_SAMPLE01">

    <DataTemplate x:Key="DataTemplate1">

        <TextBlock Text="{Binding SUBJECT}"></TextBlock>

    </DataTemplate>

    <DataTemplate x:Key="DataTemplate2">

        <Grid >

            <Rectangle Height="30" Width="{Binding SCORE}" StrokeThickness="1" Fill="Red"></Rectangle>

            <TextBlock Text="{Binding SCORE}"></TextBlock>

        </Grid>

    </DataTemplate>

 

</ResourceDictionary>



ItemViewModel.cs


public class ItemViewModel

    {

        private readonly ScoreCollection items;

 

        public ItemViewModel()

        {

            this.items = new ScoreCollection();

        }

 

        public ScoreCollection Items

        {

            get { return this.items; }

        }

    }


ScoreCollection.cs

using System.Collections.ObjectModel;

 

namespace WPF_MVVM_SAMPLE01

{

    public class ScoreCollection : ObservableCollection<Score>

    {

        public ScoreCollection()

        {

            Add(new Score() { SUBJECT = "Englsh", SCORE = 95 });

            Add(new Score() { SUBJECT = "Mathmatics", SCORE = 55 });

            Add(new Score() { SUBJECT = "History", SCORE = 65 });

        }

    }

 

    public class Score

    {

        public string SUBJECT { get; set; }

        public int SCORE { get; set; }

    }

}



소스: https://github.com/erith/WPF_SAMPLES/tree/master/WpfApp1



C#기준입니다.


doxygen 다운로드 설치 : 

http://www.stack.nl/~dimitri/doxygen/download.html







Graphviz 다운로드 설치


graphviz-2.38.msi 설치하시면 문제없으실 듯!



둘다 설치 완료 후,


뭘 실행해야할까.. 고민하게 마련인데, doxywizard 선택.



Step1. 독시젠 워킹 디렉토리 즉 작업디렉토리 지정


Wizard 탭에서

Step2. 

프로젝트이름등 지정, 그리고 Source code 디렉토리 지정. 생성할 디렉토리지정.

Mode에서는 Java or C#설정

Output에서는 Scan recursively 체크해서 하위디렉토리 검색하도록 설정.

Diagram에서는 Use dot tool from the GraphViz package설정.

Call Graphs, Called by graphs는 함수호출 관계도를 그릴것인가인데 각자 환경에 맞게 설정


Expert탭에서

Porject에서 OUTPUT_LANGUAGE 를 Korean-en 설정

Dot에서 클래스 다이어그램 그릴거면 Class Diagram체크.

DOT_PATH에서 Graphviz실행 경로 설정. 보통 --> C:\Program Files (x86)\Graphviz2.38\bin


환경설정은 저장안하면 날아가므로 반드시 저장.


추가 팁 #01

페이지 넘버링 -> Ctrl+A , 마우스 오른쪽 버튼 필드업데이트.







추가 팁 #02

이미지 포함시키기.(기본적으로 doxygen은 rtf문서 생성시 이미지를 경로로만 연결시킨다.)

Ctrl+ A ---> Alt + E + K 해서 연결 끊기한다.






윈폼 컨트롤 사용시 타 쓰레드에서 컨트롤 변경호출시 컨트롤의 InvokeRequired 확인하고 처리하는 코드가 너저분해지기 마련입니다.

이런 류 코드는 많이 쓰일 것 같은데... 



간단히 이렇게도 가능하지만, 

   textBox1.Invoke( new Action (() => { textBox1.Text = count.ToString(); } ));



좀 더 효율적으로 동작하기 위한 방법들을 찾아보았습니다.
아래 링크에 좋은 의견들이 많았습니다.
그 중 깔끔하게 사용하는 방법을 옮겨 포스팅합니다.




WinForm.cs (아래처럼 활용하시면 됩니다.)
-----------------------------------------------------------
//메인쓰레드가 아닌 다른 쓰레드에서 UI 변경 호출시
label1.RunOnUIThread(control =>
{

     control.Text = $"{progressCount}/{totalCount}";;

});





다음 확장메소드를 선언합니다.


ControlExtension.cs

----------------------------------------------------------------------------


using System.ComponentModel;

namespace RxTestWinForm
{
    public static class ControlExtension
    {
        /// <summary>
        /// T Type의 Delegate  선언
        /// </summary>
        /// <typeparam name="T">T타입</typeparam>
        /// <param name="obj">Invoke 할 컨트롤 </param>
	public delegate void RunOnUIThreadDelegate<T>(T obj) where T : ISynchronizeInvoke;
        /// <summary>
        /// ISynchoronizeInvoke 인터페이스 구현체 대한 RunOnUIThread확장 메소드
        /// </summary>
        /// <typeparam name="T">T타입, 캐스팅을 피하기 위해 사용</typeparam>
        /// <param name="obj">메소드 확장할 컨트롤</param>
        /// <param name="action">수행할 Action</param>
        public static void RunOnUIThread<T>(this T obj, RunOnUIThreadDelegate<T> action)
            where T : ISynchronizeInvoke
        {
            if (obj.InvokeRequired)
            {
                obj.Invoke(action, new object[] { obj });
            }
            else
            {
                action(obj);
            }
        }
    }
}








'C#' 카테고리의 다른 글

WPF MVVM 샘플코드  (0) 2018.05.28
doxygen 설치 및 설정  (0) 2018.05.14
간단한 한글 단어 세기 프로그램 공개  (6) 2018.03.02
IIS7 환경에서 WEBAPI 프로젝트 구동 오류시  (0) 2017.11.17
닷넷으로 CNTK 돌려보기  (0) 2017.10.24

개발환경 : windows10 pro 64bit / Visual Studio 2015 Community / .net 4.7 / WebApi

운영환경 : windows7 pro 64bit / IIS 7


환경셋팅하고 게시하니 아래와 같은 오류가 났다.

'/' 응용 프로그램에 서버 오류가 있습니다.

파일이나 어셈블리 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 액세스가 거부되었습니다.

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 

예외 정보: System.IO.FileLoadException: 파일이나 어셈블리 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 액세스가 거부되었습니다.

소스 오류: 

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.


어셈블리 로드 추적: 다음 정보는 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 어셈블리를 로드할 수 없는 이유를 알아내는 데 도움이 됩니다.

경고: 어셈블리 바인딩 로깅이 꺼져 있습니다.
어셈블리 바인딩 오류 로깅 기능을 사용하려면 레지스트리 값 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)를 1로 설정하십시오.
참고: 어셈블리 바인딩 오류 로깅 기능을 사용하도록 설정하면 그렇지 않은 경우보다 성능이 약간 떨어집니다.
이 기능을 끄려면 레지스트리 값 [HKLM\Software\Microsoft\Fusion!EnableLog]를 제거하십시오.


스택 추적: 

[FileLoadException: 파일이나 어셈블리 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 액세스가 거부되었습니다.]
   System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0
   System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +95
   System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +53
   System.Type.GetType(String typeName) +42
   System.CodeDom.Compiler.CompilerInfo.get_IsCodeDomProviderTypeValid() +14
   System.Web.Compilation.CompilationUtil.GetRecompilationHash(CompilationSection ps) +2528
   System.Web.Configuration.CompilationSection.get_RecompilationHash() +109
   System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDateInternal(Int64 cachedHash) +526
   System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(Int64 cachedHash) +57
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +148
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +878

[HttpException (0x80004005): 파일이나 어셈블리 'Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 액세스가 거부되었습니다.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +525
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +124
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +700



버전 정보: Microsoft .NET Framework 버전:4.0.30319; ASP.NET 버전:4.7.2117.0




해결:

원인은 Visual Studio 기본 프로젝트 템플릿의 문제. 운영환경 설정에서는 로슬린 컴파일러가 설정안되서 생긴 문제인듯하다.

필요없으니 제거하면된다.


web.config 에서 아래 부분을 주석처리하거나 삭제한다.

  <!--

  <system.codedom>

    <compilers>

      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>

      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>

    </compilers>

  </system.codedom>-->



참고 링크 : https://stackoverflow.com/questions/36338138/file-load-exception-microsoft-codedom-providers-dotnetcompilerplatform




그다음 또 아래와 같은 오류가 났다.

'/' 응용 프로그램에 서버 오류가 있습니다.

'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 어셈블리에서 'System.ServiceModel.Activation.HttpModule' 형식을 로드할 수 없습니다.

설명: 현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 발생했습니다. 스택 추적을 검토하여 발생한 오류 및 코드에서 오류가 발생한 위치에 대한 자세한 정보를 확인하십시오. 

예외 정보: System.TypeLoadException: 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 어셈블리에서 'System.ServiceModel.Activation.HttpModule' 형식을 로드할 수 없습니다.

소스 오류: 

현재 웹 요청을 실행하는 동안 처리되지 않은 예외가 생성되었습니다. 아래의 예외 스택 추적을 사용하여 예외의 원인 및 위치 정보를 확인할 수 있습니다.


스택 추적: 

[TypeLoadException: 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 어셈블리에서 'System.ServiceModel.Activation.HttpModule' 형식을 로드할 수 없습니다.]
   System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type) +0
   System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) +95
   System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +53
   System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +44
   System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +61
   System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase) +49

[ConfigurationErrorsException: 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 어셈블리에서 'System.ServiceModel.Activation.HttpModule' 형식을 로드할 수 없습니다.]
   System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase) +558
   System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, Boolean checkAptcaBit) +30
   System.Web.Configuration.Common.ModulesEntry.SecureGetType(String typeName, String propertyName, ConfigurationElement configElement) +57
   System.Web.Configuration.Common.ModulesEntry..ctor(String name, String typeName, String propertyName, ConfigurationElement configElement) +54
   System.Web.HttpApplication.BuildIntegratedModuleCollection(List`1 moduleList) +191
   System.Web.HttpApplication.GetModuleCollection(IntPtr appContext) +1086
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +123
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +169
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +396
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +333

[HttpException (0x80004005): 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 어셈블리에서 'System.ServiceModel.Activation.HttpModule' 형식을 로드할 수 없습니다.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +525
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +124
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +700



버전 정보: Microsoft .NET Framework 버전:4.0.30319; ASP.NET 버전:4.7.2117.0



이건 iis 재설정해줘야한다. 왜그런지는 몰겠고. 닷넷하고 iis 설정해보면 고질적으로 나타나는 문제다.(요즘은 잘모르겠다만 윈7환경때까진 진짜 많이 나왔다.)


우선 CMD창에서 아래 디렉토리로 이동한다.


cd %windir%\Microsoft.NET\Framework\v4.0.30319

64비트 환경인경우 아래다.

cd %windir%\Microsoft.NET\Framework64\v4.0.30319 

디렉토리를 이동하였으면 아래명령어를 쳐주면..된다.

aspnet_regiis.exe /iru






참고링크:

https://support.microsoft.com/ko-kr/help/2015129/error-message-after-you-install-the--net-framework-4-0-could-not-load


+ Recent posts