Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# nuget本地存储库推送不移动dll_C#_Nuget - Fatal编程技术网

C# nuget本地存储库推送不移动dll

C# nuget本地存储库推送不移动dll,c#,nuget,C#,Nuget,我已经在我的H:\demo驱动器上创建了一个C#项目。我创造了一个核弹包 nuget规范 nuget pack app.1.0.0.nupkg nuget push H:\nuget\U存储库 我把它推到H:\nuget\u repository 但现在,当我将此包作为对任何项目的引用添加时,引用源目标设置为“H:\demo\packages\app.1.0.0\lib\net45\app.dll” 但是dll应该在我的项目bin目录上移动 <package > <me

我已经在我的
H:\demo
驱动器上创建了一个C#项目。我创造了一个核弹包

  • nuget规范
  • nuget pack app.1.0.0.nupkg
  • nuget push H:\nuget\U存储库
我把它推到
H:\nuget\u repository

但现在,当我将此包作为对任何项目的引用添加时,引用源目标设置为“
H:\demo\packages\app.1.0.0\lib\net45\app.dll
” 但是dll应该在我的项目bin目录上移动

<package >
  <metadata>
    <id>app</id>
    <version>1.0.0.1</version>
    <title>AppDemo</title>
    <authors>ok</authors>
    <owners>ok</owners>
    <licenseUrl>http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE</licenseUrl>
    <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
    <iconUrl>http://ICON_URL_HERE_OR_DELETE_THIS_LINE</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>app</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2017</copyright>
    <tags>app Repository</tags>
  </metadata>
  <files>
    <file src="bin\Debug\app.dll" target="lib"></file>
  </files>
</package>

应用程序
1.0.0.1
应用演示
好啊
好啊
http://LICENSE_URL_HERE_OR_DELETE_THIS_LINE
http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE
http://ICON_URL_HERE_OR_DELETE_THIS_LINE
假的
应用程序
此版本包中所做更改的摘要。
版权所有2017
应用程序存储库
但是dll应该在我的项目bin目录上移动

不,为什么

您可以从包提要获取包。在本例中,此提要是否在本地计算机上并不重要,因为NuGet将提要视为瞬态:它将包复制到本地缓存中

从那里,包被复制到项目本地缓存(
。\packages\$packageName
),然后NuGet将对该目录中程序集的引用添加到项目中


然后,当您构建项目时,引用的程序集将从包目录复制到输出目录(
bin
)。

您的
是否正确。nuspec
正确吗?nuspecI更新的帖子在我的演示上有一个界面,我将包引用到了控制台应用程序。当我在接口上添加一个新方法时,控制台应用程序会给出运行时错误以实现新方法。但这将是新版本。此错误应出现在创建的新包上。我的问题是,我不太明白你的意思,但听起来好像你在更新一个包,而不是更改版本,导致MissingMethodException,因为你引用的DLL不包含该方法。简言之:在进行更改时更新软件包版本,因为软件包是缓存的。我的意思是我在
C:\app
中创建了X parobject,并创建了X的nuget packege,然后将其推送到
C:\repository
。然后我创建了一个客户端应用程序Y。并从本地存储库安装了程序包X。当我更改X项目代码时,Y项目会给出代码更改后的运行时错误。但我没有直接添加引用Y。我安装了packege。如果我更新包,它会给出错误。有道理吗?是的,听起来很清楚。您所描述的内容确实不应该发生,因为使用的是来自包的程序集,而不是您的项目输出。