Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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# 执行';网络出版';关于visualstudio构建_C#_Visual Studio_.net Core_Plugins_Msbuild - Fatal编程技术网

C# 执行';网络出版';关于visualstudio构建

C# 执行';网络出版';关于visualstudio构建,c#,visual-studio,.net-core,plugins,msbuild,C#,Visual Studio,.net Core,Plugins,Msbuild,我有一个.NETCore3.1解决方案,其中包含一个控制台应用程序项目以及插件项目。控制台应用程序对插件没有编译时依赖关系。也就是说,没有项目级引用。因此,使用“F5”启动调试会话会导致在内置console应用程序的$(TargetDir)中找不到插件 我想要一个VisualStudio构建来触发一个动作,将所有插件拉入控制台应用程序的相同$(TargetDir)中。我目前有一个方法,它是草率的 简单地在控制台应用程序的后期生成事件中复制文件并不能正常工作。同样,在构建后事件中使用powersh

我有一个.NETCore3.1解决方案,其中包含一个控制台应用程序项目以及插件项目。控制台应用程序对插件没有编译时依赖关系。也就是说,没有项目级引用。因此,使用“F5”启动调试会话会导致在内置console应用程序的$(TargetDir)中找不到插件

我想要一个VisualStudio构建来触发一个动作,将所有插件拉入控制台应用程序的相同$(TargetDir)中。我目前有一个方法,它是草率的

简单地在控制台应用程序的后期生成事件中复制文件并不能正常工作。同样,在构建后事件中使用powershell在每个插件上循环使用
dotnet publish
的插件,仍然会导致不同插件所持有的依赖版本之间发生冲突。到目前为止,我所看到的确保插件依赖关系不冲突的唯一方法是在整个解决方案上使用
dotnetpublish

现在,我正在使用console应用程序的后期构建事件对解决方案文件本身执行
dotnet发布。这导致了一个递归问题,我通过让构建后事件设置一个环境变量来打破这个问题,如果它以后发现设置了该变量,则退出

我想知道解决方案,以及如何调整这些方案来解决我的问题。我不清楚

我开始认为最好是从控制台应用程序向插件项目声明项目级依赖关系,尽管我不想让程序员意外地对插件产生真正的编译时依赖关系。如果我这样做了,那么所有的插件二进制文件可能会“显示”在控制台应用程序的$(TargetDir)中,而不会发生冲突。不幸的是,故事还没有结束。我的整体解决方案位于git子模块中。我的构建后事件检查父模块是否存在,如果存在,则必须将应用程序和插件二进制文件的“可发布”构建复制到父repo中的特殊输出文件夹。简而言之,每当我在VisualStudio中进行构建时,我仍然需要触发
dotnet发布

因此,无论我采取何种方法,我都需要一种方法,使整个解决方案(或者如果我允许项目级依赖,可能只是控制台应用程序)的
dotnet发布中产生VS构建结果。我还希望对该操作进行编程控制。如前所述,只有当我的git repo检测到它被克隆为子模块时,它才会尝试发布过程


有没有关于如何减少此问题的建议?

在控制台csproj文件中添加带有自定义目标的每个插件项目的发布