Como você usa montagens GAC'd como referências com csc.exe?

votos
4

Estou compilando a partir csc.exe (bem, CruiseControl é ...), e eu preciso fazer referência a uma DLL no GAC. Eu não tenho a versão correcta desta DLL como um arquivo simples, mas há uma versão correta no GAC.

No entanto, você não pode fazer referência os conjuntos no GAC com csc - você tem que ter o caminho para o arquivo real.

Eu encontrei algumas referências que afirmam que você pode fazer engenharia reversa do caminho para o arquivo real, mas eu não tenho sido capaz de fazê-los trabalhar. Eu despedi o log Fusion, e eu posso ver onde o tempo de execução está recebendo o arquivo, mas usando um caminho de arquivo para esse local em minha referência não funciona.

Então, como você fornecer csc com uma referência a uma versão de montagem que só existe no GAC?

Publicado 19/05/2009 em 22:09
fonte usuário
Em outras línguas...                            


3 respostas

votos
3

Eu recomendo usar Nant ou MSBuild e usar apenas o arquivo csproj gerado pelo estúdio visual. Em seguida, basta entrar CruiseControl para usar seu script Nant. Abaixo está um extrato de um script Nant eu escrevi,

<csc target="library" output="${basedir}/bin/${basename}.dll" debug="${debug}" optimize="true">
  <sources>
    <include name="src/app/**/*.cs"/>
  </sources>
  <references refid="My.Assemblies" />
</csc>

e as referências

      <assemblyfileset id="My.Assemblies"><include name="System.dll"></include>
    <include name="System.Configuration.dll"></include>
    <include name="System.Core.dll"></include>
    <include name="System.Data.dll"></include>
    <include name="System.Data.DataSetExtensions.dll"></include>
    <include name="System.Drawing.dll"></include>
    <include name="System.EnterpriseServices.dll"></include>
    <include name="System.Web.dll"></include>
    <include name="System.Web.Extensions.dll"></include>
    <include name="System.Web.Mobile.dll"></include>
    <include name="System.Web.Services.dll"></include>
    <include name="System.Xml.dll"></include>
    <include name="System.Linq.dll"></include>
</assemblyfileset>
Respondeu 19/05/2009 em 22:30
fonte usuário

votos
3

Eu tive um problema parecido. A solução que eu usei foi para abrir um prompt de comando e altere o diretório para algo como o seguinte (alterá-lo dependendo de qual montagem que deseja):

C: \ WINDOWS \ montagem \ GAC_MSIL \ System.Web.Extensions \ 3.5.0.0__31bf3856ad364e35 \

Você pode copiar a DLL neste diretório em algum lugar fora do GAC.

Respondeu 19/05/2009 em 22:27
fonte usuário

votos
0

Quando eu compilado contra o Excel PIA de, eu usei este caminho para especificar uma referência na linha de comando para csc.exe: C: \ windows \ assembly \ GAC \ Microsoft.Office.Interop.Excel \ 11.0.0.0__71e9bce111e9429c \ Microsoft.Office .Interop.Excel.dll

A compilação sucedido.

?? Será que isso não funcionar para você?

Respondeu 19/05/2009 em 22:16
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more