'C#'에 해당되는 글 6건
- 2020.09.14 [VS] 빌드후 이벤트 스크립트 샘플
- 2019.10.02 [c#] 관리자 권한으로 디버깅 실행하기
- 2019.09.16 Visual Studio별 .NET 버전 정보
- 2018.11.08 [C#] 로컬 포트 정보 캐기 + Process ID정보까지
- 2018.02.09 [C#] DLL이 Debug인지 Release인지 판단방법 - 부정확
- 2017.08.05 [C#] 실전요약
[VS] 빌드후 이벤트 스크립트 샘플
Posted on 2020. 9. 14. 10:22
Filed Under C#
//빌드후에 DLL 자동 복사하기
copy /Y $(SolutionDir)..\_ExeCommon\_$(ConfigurationName)\ServerCommonClass.dll $(TargetDir)
copy /Y $(SolutionDir)..\_ExeCommon\_$(ConfigurationName)\CommonClass.dll $(TargetDir)
[c#] 관리자 권한으로 디버깅 실행하기
Posted on 2019. 10. 2. 17:18
Filed Under C#
kill process 를 실행했더니 액세스 권한이 없다고 한다.
관리자 권한으로 실행이 필요합니다.
1) 프로젝트 속성 > 보안 : 'ClickOnce 보안 설정 사용'을 체크
2) 소스 폴더에 [Properties] 폴더와 그 안에 app.manifest 파일이 생성됩니다.
3) 프로젝트 속성 > 보안 : 'ClickOnce 보안 설정 사용'을 체크를 해지해 줍니다.
(ClickOnce 는 일반권한밖에 설정 못하고 manifest 파일 자동생성용으로만 사용)
4) app.manifest 열어서 편집
// ▼이 부분을
<requestedexecutionlevel level="asInvoker" uiaccess="false">
// ▼이렇게 수정
<requestedexecutionlevel level="requireAdministrator" uiaccess="false">
5) 프로젝트 빌드하면 실행파일에 방패모양 아이콘으로 변경된 것을 확인
6) 이제 실행하면 관리자 권한으로 실행됩니다.
[참고] [.Net] 관리자 권한으로 실행되는 프로그램 만들기 2013.05.16
Visual Studio별 .NET 버전 정보
Posted on 2019. 9. 16. 10:56
Filed Under C#
C# 1.0 : Visual Studio .NET 2002 - .NET Framework 1.0
C# 2.0 : Visual Studio 2005 - .NET Framework 2.0
C# 3.0 : Visual Studio 2008 ~ 2010 - .NET Framework 2.0 ~ 3.5
C# 4.0 : Visual Studio 2010 - .NET Framework 4.0
C# 5.0 : Visual Studio 2012 ~ 2013 - .NET Framework 4.5
C# 6.0 : Visual Studio 2015 - .NET Framework 4.6
출처: C# 언어 버전과 비주얼스튜디오 버전 2016.05.04
서버운영체제 변경중..
Windows Server 2008(.NET Framework 2.0) → Windows Server 2016(.NET Framework 4.6.2)
.NET Framework 2.0 프로그램 구동을 위해서 하위호환되는 .NET Framework 3.5 을 설치.
다음 단계는 .NET Framework 변경작업이 남음.
[C#] 로컬 포트 정보 캐기 + Process ID정보까지
Posted on 2018. 11. 8. 14:19
Filed Under C#
포트상태 감시자 만드는 중 간단히 Listen포트정보와 Tcp연결포트 정보를 가져오는 API를 발견하여 정리해둔다.
단, IPv4정보만 출력된다.
netstat 명령어와 같이 모든 정보를 얻고 싶으면 아래 링크의 샘플코드를 참조할 것▼
C# Sample to list all the active TCP and UDP connections using Windows Form appl | 2016-01-20
using System.Net.NetworkInformation; //IPAddress, IPGlobalProperties using System.Net;//IPEndPoint static void Main(string[] args) { _Print("IPAddress.Any = " + IPAddress.Any.ToString()); _Print("IPAddress.None = " + IPAddress.None.ToString()); _Print("IPAddress.Broadcast = " + IPAddress.Broadcast.ToString()); _Print("IPAddress.Loopback = " + IPAddress.Loopback.ToString()); _Print("IPAddress.IPv6Any = " + IPAddress.IPv6Any.ToString()); _Print("IPAddress.IPv6Loopback = " + IPAddress.IPv6Loopback.ToString()); _Print("IPAddress.IPv6None = " + IPAddress.IPv6None.ToString()); Console.WriteLine("\r\npress any key to exit.."); Console.ReadKey(); PortList(); Console.WriteLine("\r\npress any key to exit.."); Console.ReadKey(); } public static void PortList() { IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties(); IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners(); _Print("▼ GetActiveTcpListeners ----------------"); foreach (IPEndPoint endPoint in ipEndPoints) { _Print(string.Format("AddressFamily={0}, IP={1}, PORT={2}", endPoint.AddressFamily.ToString(), endPoint.Address.ToString(), endPoint.Port)); } TcpConnectionInformation[] tcpConnInfoArray = ipProperties.GetActiveTcpConnections(); _Print("▼ GetActiveTcpConnections ----------------"); _Print("Local\t\t\t ┃Remote\t\t\t ┃State"); foreach (TcpConnectionInformation tcpConnInfo in tcpConnInfoArray) { TcpState tcpState = tcpConnInfo.State; IPEndPoint localEndPoint = tcpConnInfo.LocalEndPoint; IPEndPoint remotrEndPoint = tcpConnInfo.RemoteEndPoint; _Print(string.Format("{0}:{1}\t ┃{2}:{3}\t ┃{4}", tcpConnInfo.LocalEndPoint.Address, tcpConnInfo.LocalEndPoint.Port, tcpConnInfo.RemoteEndPoint.Address, tcpConnInfo.RemoteEndPoint.Port, tcpConnInfo.State.ToString())); } } static public void _Print(string aMsg) { Console.WriteLine(aMsg); System.Diagnostics.Debug.WriteLine(aMsg); }▼출력 결과
IPAddress.Any = 0.0.0.0 IPAddress.None = 255.255.255.255 IPAddress.Broadcast = 255.255.255.255 IPAddress.Loopback = 127.0.0.1 IPAddress.IPv6Any = :: IPAddress.IPv6Loopback = ::1 IPAddress.IPv6None = :: ▼ GetActiveTcpListeners ---------------- AddressFamily=InterNetwork, IP=0.0.0.0, PORT=80 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=135 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=623 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=1025 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=5357 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=10004 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=31234 AddressFamily=InterNetwork, IP=0.0.0.0, PORT=55920 AddressFamily=InterNetwork, IP=14.9.217.129, PORT=139 AddressFamily=InterNetwork, IP=127.0.0.1, PORT=1065 AddressFamily=InterNetwork, IP=127.0.0.1, PORT=16105 AddressFamily=InterNetwork, IP=127.0.0.1, PORT=55501 ▼ GetActiveTcpConnections ---------------- Local ┃Remote ┃State 14.9.217.129:1045 ┃12.4.11.221:9992 ┃Established 14.9.217.129:1049 ┃12.4.11.221:9991 ┃Established 14.9.217.129:2029 ┃64.233.188.188:5228 ┃Established 14.9.217.129:23449 ┃211.115.106.205:80 ┃CloseWait 14.9.217.129:24345 ┃104.17.129.217:443 ┃Established 14.9.217.129:24675 ┃121.156.118.102:80 ┃CloseWait 127.0.0.1:24836 ┃127.0.0.1:9229 ┃SynSent 127.0.0.1:24837 ┃127.0.0.1:9229 ┃SynSent
해당포트의 Process ID값까지 필요하다면 - 예를 들어 kill process로 포트를 닫아야할 때 - 아래 샘플 소스 사용가능
.NET Framework 4.0 이상 / iphlpapi.dll 활용
C# Sample to list all the active TCP and UDP connections using Windows Form appl
[C#] DLL이 Debug인지 Release인지 판단방법 - 부정확
Posted on 2018. 2. 9. 15:32
Filed Under C#
출처:
http://smallbutdeep.tistory.com/253
http://dave-black.blogspot.kr/2011/12/how-to-tell-if-assembly-is-debug-or.html
▼Debug
// --- 다음 사용자 지정 특성이 자동으로 추가됩니다. 주석 처리를 제거하지 마십시오. -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 )
▼Release
// --- 다음 사용자 지정 특성이 자동으로 추가됩니다. 주석 처리를 제거하지 마십시오. -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )
▶ 결론적으로 4번째 바이트(DebuggableAttribute.DebuggingModes.DisableOptimizations)가
0 = DebugMode
1 = ReleaseMode
[C#] 실전요약
Posted on 2017. 8. 5. 15:04
Filed Under C#
Compile: Shift+Ctrl+B (Section 3, Lecture 17 - Demo: Variables and Constants) Run : Ctrl+F5 Line Delete: Ctrl+X TooltipHelp: Alt+Enter code snippet: cw +Tab -> Console.WriteLine datatype에 마우스 오버 + [Ctrl+Click] : Object Browser
기본 데이터 타입: 닷넷타입 byte, short, integer, long / float, double / char / bool :