Visual studio Visual Studio pré生成事件删除引用
我不想麻烦您解释我为什么要这样做,但我正在寻找一种方法,在构建项目时删除对dll的引用。我说的不是一个未使用的引用,而是一个可能包含与我的项目使用的相同名称空间和相同类的引用。我正在考虑一个prébuild事件命令行,但我不知道该命令会是什么样子 PS:对于那些关心我为什么想要这个的人。我有一个模板项目a,其中包含使用另一个项目B中定义的基类的类。此模板项目a的唯一功能是打包在一个Nuget包中,然后部署到多个其他项目中,为简单起见,请想象3个项目C、D和E。在项目C中使用Nuget,D&E将生成所有类,并对项目B的dll进行引用,因为我们需要基类。目前,我还获得了对模板项目a的DLL的引用。这是不应该发生的,因为项目a和项目C、D&E中将存在具有相同名称空间的所有类。这就是我希望自动删除对模板项目a的引用的原因 提前谢谢 亲切问候, 扬尼克 Visual Studio pré生成事件删除引用 是否要在生成项目时删除生成事件命令行中的引用项目A?如果是,恐怕没有直接生成事件命令行来执行此操作,您可以创建一个powershell脚本来删除引用,然后在生成事件中执行此powershell脚本Visual studio Visual Studio pré生成事件删除引用,visual-studio,events,command-line,build,nuget,Visual Studio,Events,Command Line,Build,Nuget,我不想麻烦您解释我为什么要这样做,但我正在寻找一种方法,在构建项目时删除对dll的引用。我说的不是一个未使用的引用,而是一个可能包含与我的项目使用的相同名称空间和相同类的引用。我正在考虑一个prébuild事件命令行,但我不知道该命令会是什么样子 PS:对于那些关心我为什么想要这个的人。我有一个模板项目a,其中包含使用另一个项目B中定义的基类的类。此模板项目a的唯一功能是打包在一个Nuget包中,然后部署到多个其他项目中,为简单起见,请想象3个项目C、D和E。在项目C中使用Nuget,D&E将生
但是,正如imp所说,如果根本不使用包a,为什么需要对它的引用呢?。因此,作为一种解决方法,您不能将引用项目a添加到项目C、D和E中,为此,您可以将dll文件定向到tools文件夹,而不是.nupsec文件中的lib文件夹: 然后打包这个.nuspec文件,生成nuget包,将这个包安装到项目中,引用项目A将不会添加到项目中
希望这能有所帮助。如果软件包a根本不被使用,为什么需要它的引用?有多种方法可以解决您的问题,但我强烈反对将程序集排除在编译之外。这里最好的方法是在一个数据库中使用不同的名称空间,特别是如果您同时控制这两个名称空间的话。第二种方法是为引用的项目/包添加全局别名。示例:path\to\MyLibrary.dll CoolLibrary@Yan,现在这个问题如何?你解决了吗?如果没有,请告诉我这个问题的最新状态。@imps,我不需要项目A的引用,就像我说的那样。问题是我总是得到引用,因为我总是使用includereferencedprojects参数。我总是使用includereferencedprojects参数创建nuget包。不这样做&指定应该使用哪些依赖项和文件解决了这个问题。我这样做的方式与您定位lib\net45文件夹的方式相同。我会将你的帖子标记为答案,但你能解释一下目标工具文件夹的确切功能吗?
<files>
<file src="bin\Debug\ProjectA.dll" target="Tools\ProjectA.dll" />
</files>
<?xml version="1.0"?>
<package >
<metadata>
<id>MyModels</id>
<version>1.0.0</version>
<authors>Tester</authors>
<owners>Tester</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="bin\Debug\ProjectB.dll" target="lib\Net45\ProjectB.dll" />
<file src="bin\Debug\ProjectA.dll" target="Tools\ProjectA.dll" />
</files>
</package>