nuget 복원 에러 NU1100

.NET 2021. 8. 30. 18:18

dotnet-sdk 설치 후 

dotnet --info 
등의 명령에는 이상 없는데.

dotnet restore
명령 하면 전체 패키지에 대해 복원을 못 하는 문제

xxx.csproj : error NU1100: 'net5.0'에 대해 'xxxx' 을(를) 확인할 수 없습니다.
xxx.csproj : error NU1100: Unable to resolve 'xxx' for ...

---

기존에 .net core SDK 가 있던 상태에서 .net sdk 5.0설치하고 발생한 문제였는데
아래와 같이 해결하였다. (원래 기본값으로 아래 api.nuget.org 가 들어가 있는게 정상인데 하나도 등록이 안돼 있었음)

dotnet nuget add source --name nuget.org https://api.nuget.org/v3/index.json

 

참고 URL : https://github.com/dotnet/sdk/issues/4156

Posted by 김모작자

댓글을 달아 주세요

사전 정의

- Visual Studio 2017

- MySQL for Visual Studio 1.2.7

- MySQL Connector 6.9.10
Connector 버전이 중요하다!!


프로젝트를 만든 후

1. nuget 으로 아래 컴포넌트를 설치한다

EntityFramework 6.2 (현재 시점 젤 높은 버전)
MySQL.Data 6.9.10
MySQL.Data.Entity.EF6 6.9.10

2. Rebuild 를 수행한다

3. 새 항목(new Item) 추가하여 ADO.net entity data modal 추가


주의 사항!  (이 글을 쓴 목적)

- Entity Data Modeling Wizard 가 사용할 DB 선택 후 넘어갈때 그냥 사라지는 경우가 있다  ==> 위 컴포넌트의 버전을 꼭 일치시켜 준다. 간혹 기존 저장해 준 설정으로 더 이상 접속을 못 하는 경우에도 종료되기 때문에 접속 여부 다시 확인 필요.

- Wizard 에서 MySQL connector 가 안보인다.. ==> MySQL for visual studio 설치부터 다시 해본다. 

- 버전 일치가 중요하고... 드라이버 및 MySQL.Data 추가 후 꼭 Rebuild 해야 적용된다



Posted by 김모작자

댓글을 달아 주세요

comboBox 의 경우 예전에는

var src = 데이터 불러오기 ()...

for(.....){

  combobox.items.add(....);

}

형태로 추가하고 했다... 


근데 닷넷은 

var src = 데이터불러오기~

var dataSource = new BindingSource(src, null);

comboBox.DataSource = dataSource;

comboBox.displayMember = "src 의 표기를 담당하는 property";

comboBox.valueMember = "src 의 값을 담당하는 property";

요렇게 깔끔하게 되더라..

이점/단점을 모르겠다;


Posted by 김모작자

댓글을 달아 주세요

C# 에서 GDI+ 사용하여 생성한 이미지를 저장하려니 


System.Runtime.InteropServices.ExternalException (0x80004005): GDI+에서 일반 오류가 발생했습니다.

   위치: System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)

   위치: [xxxxxxx].[xxxx](Entry entry)


위와 같이 80004005 에러가 생기기도 하고, 


메인 쓰레드에 잘 쓰던 기능을 내가 만든 다른 타 쓰레드에서 호출, File 접근, 기록 할 때 마다 Access Denied (= Win32 에 5번 코드)  가 발생했다면 ...


ACL 권한 때문에 분명 Impersonate 시켜서 시작했는데....

분명 메인 쓰레드(=시작 쓰레드)에서는 별 문제 없던 코드였는데

자식 스레드에서 위 에러가 발생한다면

해당 쓰레드가 Impersonate 되지 않았기 때문이다..


그 문제가 되는 쓰레드 생성할 때 원래 쓰레드의 정보를 넘겨주면 해결된다는 거..

즉, Impersonation 은 쓰레드간 (자동으로) 공유되지 않는다는 점.


아래 func 함수에서 쓰레드 생성하는것처럼 Impersonation 정보를 주고 받고 해야함..

자식 쓰레드)

void ThreadProc(object obj){


var identity = (WindowsIdentity) obj;


using(var impersonation = identity.Impersonate()){


// 원래 코드


}

}


부모 쓰레드)


void func(){


Thread thread = new Thread(new ParameterizedThreadProc(WindowsIdentity.GetCurrent() ));


// .....

}


예제라서 WindowsIdentity 이고,, 상황에 따라 적절한 Identity 를 사용하면 될듯...


Posted by 김모작자

댓글을 달아 주세요

과거에는 Oracle ODP.net 을 사용하려면 Instant Client 가 필요했었다.

Instant Client 는 C 로 빌드된것으로 아키텍쳐에 따라 구분해서 사용했는데

이번에 다른 프로젝트를 만들다보니 새 버전이 나왔더라..

완전히 .net 으로 코딩된 새버전!



일단 아래 처럼 흔하디 흔한 시작 문자열을 가지고 시작했는데


using Oracle.ManagedDataAccess.Client;

....

....

        public OracleConnector(CONNECT_INFO info)
        {
            string src = string.Format("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={3}))(CONNECT_DATA=(SERVICE_NAME={4})));User Id={1};Password={2};", info.IP, info.LoginID, info.LoginPWD, info.PORT, info.ServiceID);
            con = new OracleConnection();
            con.ConnectionString = src;
            con.Open();
        }



자꾸

Oracle.ManagedDataAccess.Client.OracleException (0x80004005): Oracle 통신: 서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다. ---> OracleInternal.Network.NetworkException (0x80004005): Oracle 통신: 서버에 접속하는 데 실패했거나 접속 문자열을 구문 분석하는 데 실패했습니다. ---> System.Security.Authentication.AuthenticationException: SSPI를 호출하지 못했습니다. 내부 예외를 참조하십시오. ---> System.ComponentModel.Win32Exception: 보안 패키지에 사용할 수 있는 인증서가 없습니다


에러가 나더라..

실제로 위와 같은 상황에서는 sqlplus 로 하면

ORA-12638: 신용 검색에 실패했습니다



주로 해당 PC 에 오라클이 기본 상태로 설치된 경우에 발생하는것 같다..


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

해결 방법 --->


1. 독립적인 환경 구성을 위해 TNS 관리자 경로를 자기 자신으로 설정한다

   app.config 또는 web.config 에 ManagedDataAccess 모듈을 nuget 으로 설치했다면 자동으로 생성됐을거임.. 아래처럼 경로만 추가로 써주면 된다

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <!--<dataSource alias="ExtOracle" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxxxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=eeee))) "/> -->
      </dataSources>
      <settings>
        <setting name="TNS_ADMIN" value="." />
      </settings>
    </version>
  </oracle.manageddataaccess.client>


2. sqlnet.ora 파일 생성


sqlnet.authentication_services=(none)
NAMES.DIRECTORY_PATH=(TNSNAMES, EZCONNECT)

SSPI 관련 문제는 위에줄에 있는 내용으로 커버가 되며, 아래 내용으로 EzConnect 형태로 접속 문자열을 사용할 수 있음. 이미 오라클 설치중이라면 admin 폴더에 찾아가서 변경하면 된다

참고로 이 파일을 만든 후 파일 속성(Properties, Alt+F4)에 가서 "Overwrite if newer" 또는 "Copy Always" 를 선택해서 빌드된 경로로 복사되도록 한다

Posted by 김모작자

댓글을 달아 주세요

아마 C++ 도 동일하다고 봄... (예전에 알고 있었으나 잊어먹은듯)

1. 보통 프로그램 시작시 디렉토리 경로는 프로그램이 위치하는 곳이나, Window Service 의 경우 C:\Windows\System32 등 시스템 경로가 된다. 경로가 다르기 때문에 추가 파일 등에 대응하기 위해서 경로를 실제로 변경하거나 Command-line parameter 등에 기록하거나 한다

나의 경우 log4net 의 설정을 xml 파일에 두고 사용하는데
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));
이렇게 해두면 콘솔 등의 보통 프로그램은 문제 없으나 윈도 서비스 사용시 system32 폴더에 log4net.xml 이 있지 않는 이상
로그 출력이 안되는 문제가 발생한다

그래서 프로그램 시작하자마자,
System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
이 코드를 삽입해 시작하자 프로그램이 위치하는 경로를 현재 위치로 변경해 콘솔 프로그램과 같은 환경을 만들어준다.

2. 권한 문제

LOCAL SERVICE, LOCAL SYSTEM, NETWORK SERVICE 를 잘 골라서 사용하자

 

Posted by 김모작자

댓글을 달아 주세요

하루 종일 삽질하다가 알게 된 문제..

1)OracleCommand 에 파라미터를 전달할때 @ 또는 : 쓰는 문제

SQL 문에
"insert into OoopsTable (FileNo, storage_origin, isdeleted, filepath, filename, filesize, IsDirectory, stdFilehash, whenRegistered, FTSearchField, FTSearchField2)
                                            values(CDPSTRGFILESSEQ.nextval, :storage_origin, 'N', :filepath, :filename, :filesize, :isdirectory, :stdFilehash, sysdate, :FTSearchField, :FTSearchField2) ";

파라미터임을 표시할때 이렇게 :xxx 형태로 파라미터를 쓰게 된다. 과거 버전은 @ 를 쓰는것 같다

버전에 따라 @ 를 쓰거나 : 를 쓰는것 까진 이해할 수 있다.. 버전이 다르다니깐..

 

2) 파라미터를 분명히 넘겼는데 에러 날때

근데.. 보통 쿼리에 필요한 파라미터를
OracleParameter 를 만들어 추가하는데..  아래와 같이 할 것이다
OracleCommand cmd = new OracleCommand( my query );
...
cmd.Parameters.Add( new oracleParameter("파라미터 이름" ....));
cmd.Parameters.Add( new oracleParameter("파라미터 이름" ....));
cmd.Parameters.Add( new oracleParameter("파라미터 이름" ....));
cmd.Parameters.Add( new oracleParameter("파라미터 이름" ....));
....

근데 자꾸
ORA-01722 invalid number
bind 오류 등이 난다.

해결책 부터 얘기하자면

OracleCommand 만들때 BindByName 을 true 로 설정해서 원래 생각하던대로 넘기면 해결된다. 왜 이게 기본값이 false 인지 모르겠다.. 썩을..

BindByName 을 false 로 해두면 변수 이름은 무시되고 서수에 의해 맵핑된다, 그래서 파라미터 인자 와 추가된 파라미터가 다르면 계속 파라미터 오류가 생긴다..

 

Posted by 김모작자

댓글을 달아 주세요

try
{
}
catch(AccessViolationException e)
{
}

이런식으로 Access Violation 이 처리될줄 알았는데,
그냥 시스템으로 넘어가버려 프로그램이 종료되었다.

codeproject 에서 찾다보니 아래 링크까지 갔는데
http://msdn.microsoft.com/en-us/magazine/dd419661.aspx#id0070035

내용인 즉슨, 저 예외를 잡으려는 함수에
[HandleProcessCorruptedStateExceptions]
[SecurityCritical]
두 가지 속성을 붙여주면 해당 예외를 잡을 수 있다한다.


[HandleProcessCorruptedStateExceptions]
[SecurityCritical]

void test()
{
  try
  {
  }
  catch(AccessViolationException e)
  {
  }
}

 

 

Posted by 김모작자

댓글을 달아 주세요

참고글 : http://stackoverflow.com/questions/15733159/difference-between-standard-ninject-and-ninject-web-mvc-in-an-mvc3-project

결론은 Visual Studio 2012 SP4 까지도 mvc5/razor3 지원을 못했다.. 근데 현재 시점에서 추가 설치 버전으로
업그레이드가 가능하니 받기 바란다!

 

다운로드는 여기
배포 페이지는 여기

 

Posted by 김모작자

댓글을 달아 주세요

 1. nuget 으로 mvc 나 razor를 업그레이드 하고 나면 아래와 같은 에러가 뜬다...
이는 참조 모듈은 변경되었으나 web.config 에 과거 버전이 기재되어 있기 때문이다.

1) razor 업그레이드 한 경우

2) mvc 를 업그래이드한 경우

Expression of type 'System.Web.Mvc.MvcWebRazorHostFactory' cannot be
used
for return type 'System.Web.WebPages.Razor.WebRazorHostFactory'

해결 방법 : Views 폴더 안에 있는 web.config 에 있는 버전을 일괄 변경한다.

위의 경우 2.0.0.0 으로 된 razor 버전을 일괄 3.0.0.0 으로 변경하였고, 
두번째 Mvc 관련 오류도 web.config 에 기재된 Mvc  버전을 4.0.0.0 에서 5.0.0.0 으로 일괄 변경하여 에러를 해결하였다.

 

그런데 다 고치고 나면 Visual Studio 가 이상한 짓을 하게 된다

멀쩡한 애들이 없다고 난리다.
이 문제는 프로젝트 루트에 있는 web.config 에서

webpages:Version 을 사용하고 있는 razor 버전 (여기서는 3.0.0.0) 에 맞춰 기록해 주면 된다.

 

 

 

Posted by 김모작자

댓글을 달아 주세요

원문 링크(Original Posting From)

 
Posted by 김모작자

댓글을 달아 주세요

http://docs.oracle.com/html/E10927_01/InstallODP.htm

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

위 링크에 내용 있음...

결론은

1) web.config 등에 사용할 oracle (instant) client 를 지정할 수 있음

2) registry (HKLM/Software/Oracle/ODP.net 에 경로를 써도 된다

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

1) 링크에 있는 내용 발췌 - config 파일에 경로 지정하기

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <oracle.dataaccess.client>
    <add key="DllPath"            value="C:\oracle\bin"/>
    <add key="FetchSize"          value="65536"/>
    <add key="StatementCacheSize" value="10"/>
    <add key="TraceFileName"      value="c:\odpnet1.trc"/>
    <add key="TraceLevel"         value="63"/>
    <add key="TraceOption"        value="1"/>
  </oracle.dataaccess.client>
</configuration>

The following is an example of a web.config file for .NET Framework 2.0:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <oracle.dataaccess.client>
    <settings>
      <add name="DllPath"               value="C:\oracle\bin"/>
      <add name="FetchSize"             value="65536"/>
      <add name="PromotableTransaction" value="promotable"/>
      <add name="StatementCacheSize"    value="10"/>
      <add name="TraceFileName"         value="C:\odpnet2.trc"/>
      <add name="TraceLevel"            value="63"/>
      <add name="TraceOption"           value="1"/>
    </settings>
  </oracle.dataaccess.client>
</configuration>
 
 
Posted by 김모작자

댓글을 달아 주세요

ODP.net 4 설치하기!!

.NET 2013. 8. 13. 10:44

Visual Studio 2010 에서 만든 web project 를

IIS + Oracle Server 서버에 배포할때마다

odp.net 4.0 관련 문제 때문에 골치가 아팠는데,

ODAC (Oracle Data Access Component) 를 설치하는 방법에 비밀이 있었다!

 

원래, Oracle Server 또는 Oracle Client  설치 후에는 odp.net 2.0 (.net 2.0 용) 만 설치되어 있는데..

별도로 배포되는 ODAC 에 .net 4.0 용 버전이 들어있는 것이었다!!

허나, 한 PC 에 오라클 두군데 설치해야하나? 해서 매번 odac 파일들을 복사해서 사용했는데..

 

ODAC 설치할때 Oracle HOME 을 바꿀 수 있었던 것이다!!!

바꿀 수 있는데 왜왜왜!! 회색으로 돼서 못 고를것처럼 보이게 한건지...

자바 환경에선 이게 정상인건지...

 

고로 odp.net 4.0 을 깔끔하게 사용하기 위해선

Oracle Client/Server 설치 후

같은 버전의 ODAC 를 다운로드 받아

Oracle Home 을 선택해 컴포넌트가 추가 되는 형태로 설치돼야한다!!

 

 

여기서는 기존에 설치된 유형을 골라주면 된다.
Oracle Server 를 설치한 경우 아래,
클라이언트가 설치된 경우 또는 아무것도 없는 경우 위에 것을 선택한다

문제의 버튼... 회색 버튼을 누르면 화면에 보이는 것처럼 파란색으로 설치된 목록이 나타난다. 마찬가지로 아래 경로(A) 에 있는 콤보 박스 버튼을 눌러도 기존 설치된 항목이 보인다.

 

 

Posted by 김모작자

댓글을 달아 주세요

참고 링크 :

Writing a Managed Internet Explorer Extension
http://msmvps.com/blogs/vcsjones/archive/2010/05/23/writing-a-managed-internet-explorer-extension-part-1.aspx

BHO dev. using managed code (C#)
http://www.codeproject.com/Articles/350432/BHO-Development-using-managed-code

Calling C# BHO methods from Javascript
http://stackoverflow.com/questions/9287961/calling-c-sharp-bho-methods-from-javascript

How to attach to Browser Helper Object (BHO) with C# in two minutes
http://www.codeproject.com/Articles/19971/How-to-attach-to-Browser-Helper-Object-BHO-with-C

 

 

 

Posted by 김모작자
TAG BHO, c#

댓글을 달아 주세요

I've just finished BEEP implementation code in .net !!
If you are interested, please contact me (inetizen@gmail.com). Free!!

It's just 99% code. Not tested much.

 

Posted by 김모작자

댓글을 달아 주세요

BEEP Summary

.NET/BEEP 2013. 7. 4. 11:41

Based on TCP, XML, Interleaved....

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

MSG -> RPY (Positive Answer)

MSG -> ERR (Negative Answer)

MSG -> ANS (Progressive Answer)

MSG -> NUL (End of ANSs)

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

Frame = Header + Payload(DATA) + Trailer
            (Header, Trailer has CRLF)

 

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

1) Connect
2) Channel Negotiation in Channel 0.
3) Enter ChannelN
4) Communicating...
5) Bye.

 

Posted by 김모작자

댓글을 달아 주세요

Referenced RFCs

.NET/BEEP 2013. 7. 4. 11:26

http://tools.ietf.org/html/rfc3080

http://tools.ietf.org/html/rfc3081

 

 

 

Posted by 김모작자

댓글을 달아 주세요

HTML 을 불러와 xml 또는 xhtml 로 저장하려할때

1)  form 태그가 하위 요소를 포함하지 않고 혼자서 태그가 닫히는 문제가 있었다

<form>
  <input>
  <input>
</form>

을 변환하고 나면

<form/>
  <input/>
   <input/>

이렇게 되었다.

관련 게시글 : http://htmlagilitypack.codeplex.com/discussions/7121

해결책은 링크에 있는것처럼 소스 코드를 받아 리빌드 하는것이다.
소스 파일 중에 HtmlNode.cs 가 있는데

ElementsFlags.Add("form", HtmlElementFlag.CanOverlap | HtmlElementFlag.Empty);

위와 같이 되어 있을것이다. 저 코드의 htmlelementFlag.Empty 를 지워버리면 된다.

 

2) form 하위 노드가 검색이 안되는 문제

<form>
 <input>
 <input>
</form>

xpath 로 검색하는데 form/input 이 null 로 반환되는 경우

해당 코드를 사용하기 전에

HtmlNode.ElementsFlags.Remove("form");

위 코드를 실행해주면 하위 노드가 나타난다

Posted by 김모작자

댓글을 달아 주세요

java 용은 충분히 많으나

.net 에서 쓰기에 적합한건 제한적이다

다행히 open source 중 완성도가 높은게 있는데

 

1) HTML Agility Pack ( http://htmlagilitypack.codeplex.com/ )

2) HTML Tidy Managed ( https://github.com/markbeaton/TidyManaged )

 

추가로 WebKit 을 기반으로 한 HTML Browser Control 로는

WebKit.net ( http://webkitdotnet.sourceforge.net/ )

이 있다.

참고로 이 컨트롤을 사용할때 빌드된 webkit binary 를 같은 폴더에 복사해서 사용해야 한다

(컨트롤 초기화 시점에 발생하는 문제라면 이게 99%)

 

Posted by 김모작자

댓글을 달아 주세요

1) www.chromium.org 에서 현재 버전의 소스를 다운로드
2) depot_tools 다운로드 및 PATH 환경 변수에 경로 추가
3) 크롬 소스 내에서 gclient runhooks --force 를 통해 Visual Studio 솔루션 파일 생성

 

 

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

.net 으로 빌드된 웹킷이 있음.

http://webkitdotnet.sourceforge.net/basics.php

 

Posted by 김모작자

댓글을 달아 주세요