dotnet publish Not Deploying - .net-core

I am trying to execute a Web Deploy on my .NET Core 2.0 Project. Deploying manually from within Visual Studio's "Publish" feature works fine.
From the command line, I am executing:
dotnet publish TechsportiseOnline/TechsportiseOnline.csproj -c Release /p:PublishProfile="Properties\PublishProfiles\techsportise.com - Web Deploy" /p:Username="***" /p:Password="***"
The command comes back as successful, with no errors at all - even with verbosity set to Diagnostic. For all intents and purposes, Visual Studio thinks its been a success.
However when I visit the website, the change I have made is very clearly not there. I have tried visiting Incognito and clearing cache and the change simply is not deployed.
I have tried the same command using dotnet build /p:DeployOnBuild=true and I have also tried specifying all the parameters manually
dotnet build TechsportiseOnline/TechsportiseOnline.csproj -c Release /p:DeployOnBuild=true /p:DeployIisPath="techsportise.com" /p:MSDeployServiceURL="***" /p:Username="***" /p:Password="***" /p:SkipExtraFilesOnServer=true /p:AllowUntrustedCertificate=true
I don't think its a local system issue as I am getting the same issue using Bitbucket Pipelines - reporting success even though no changes are visible post-deploy. I don't think it's a server issue as it works when manually executing Publish inside VS.
Any ideas?

You are looking for changes using the web browser. Instead verify the files have changed. I am assuming they have and your issue it the browser is caching the website. Try refreshing with ctr + F5 or try clearing the browser data.

Either you are executing the command from a different folder which has the same project files or you have some Cache issues. Try Ctrl+shift+delete on your browser and clear everything or open a new Incognito window and try again.

This is an old thread - but I found there is a bug w/ dotnet publish when using CLI.
It'll ignore the PublishUrl and publish locally (can view from the logs pretty easily)
To get around - you can manually add PublishDir then it'll work from the CLI
https://github.com/dotnet/sdk/issues/12490

Related

Dotnet CLI command fails to run DLL

This is probably something stupid I'm overlooking, but suddenly the dotnet CLI command fails to run my .Net Core Project DLL (>dotnet MyFrameworkDependent.dll). It runs fine locally but just doesn't do anything on the VM which is Win7Pro. I reinstalled .Net Core and 'dotnet' utility is there as I can run it with -help and other stuff in the admin command prompt. It just wouldn't do anything when I pass my DLL. It used to run with the previous version, but now - nothing! Not even any error or feedback. Any ideas on how I can troubleshoot this? Any clues are greatly appreciated!
Windows Event viewer may contain either of these errors
1603 == ERROR_INSTALL_FAILURE
1618 == ERROR_INSTALL_ALREADY_RUNNING
Cause:
This issue may occur if another program has not completed installing and a system reboot is required.
Resolution:
To resolve this issue, delete the strings, if any, in the PendingFileRenameOperations and FileRenameOperations registry keys.
Turned out there was some kinda problem with directory contents. I was able to run the DLL within the publish directory. I don't have time at the moment to investigate further, but if I get to it, I'll post details.

Meteor android build version

I have a strange issue. I build my Meteor app and run it on android device using -
meteor run android-device --mobile-server=<my_aws_ip>:3000
When the app deploys immediately it connects to the server (and my javascripts etc works). After a few seconds, the page refreshs and none of the javascript callbacks work. Please help me debug this issue.
More information: If I change the client (and not the server), and deploy it, for the first few seconds, the changed client gets shown on the phone. After the first few seconds, the version which is present on the server is shown. So I think Cordova or Meteor is trying to fetch the client code from the server, which is breaking the app. Is there a way to prevent this behavior?
Even more data points -
My aws code does NOT have android and ios platforms installed. Because of this, I think the cordova plugins are not installed, causing a JS break somewhere.
Easiest fix I can think of is remove cordova autoupdate. This is being added by meteor-platform package. If I clone meteor-platform and comment out the cordova autoupdate, the app doesn't load.
Is there another way of removing autoupdate?
This sounds like you have a different version of your app deployed at the mobile-server address.
The local code is run in development mode. Your AWS one is likely in production mode (and may contain a syntax error).
When you run your app it sees the code is different and fetches the new/old (different) version with a hot code reload - hence the page refresh/flash.
To fix this, you need to find the syntax error in your code. It's best to view the ADB logger or run with meteor run --verbose android-device ....
This will provide a bit more information such as an Uncaught exception: cannot read .. of null error type error.
It's hard to say what the error is. The error prevents the rest of your code from executing. In production mode the entire project is one JS file. If there is an error of any kind half way along the file, the rest of the file will not execute.
Also, try loading <my_aws_ip>:3000 in your browser and watch for JS errors in the JS console.
You can also run it locally with --production to simulate a production build environment locally.
Enabling autoupdate but without a page refresh:
Reload._reload = function (options) {
console.log("Next load will load new version");
};

Asp.Net 5 - On the fly compilation

I just got an ASP.NET 5 Web API Application running in Visual Studio code by following this guide and I can launch the application by executing the command "dnx . web". How can I make the application build on the fly when I make changes to the source file ?
Update - This seems to be an open issue. Link 1, Link 2
dnx . web --watch is the command that you are looking for.
However, there is a caveat when you do that from command line: when a file changes, the server is stopped.
When you do the same from VS 2015, VS knows how to restart the server when it stops.
I noticed I had the same problem, and it seems to work more or less as expected if you run your site without the debugger attached.
I think the debugger is more sensitive to changes in cs files, and does't want them to change while it's trying to trace/step through them.
At first I thought it was related to the CLR type you use to run it, but I can change that and it works as long as youre not debugging.

Way to debug Meteor code? [duplicate]

Does anyone know a good method to debug server side code?
I tried enable Node.js debug then use node-inspector but it does not show any of my code.
I end up using console.log but this is very inefficient.
Update: I found the following procedure works on my Linux machine:
When you run Meteor, it will spawn two processes
process1: /usr/lib/meteor/bin/node /usr/lib/meteor/app/meteor/meteor.js
process2: /usr/lib/meteor/bin/node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive
You need to send kill -s USR1 on process2
Run node-inspector and you can see your server code
On my first try, I modify the last line on meteor startup script in /usr/lib/meteor/bin/meteor to
exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$#"
and run NODE_DEBUG=--debug meteor on command prompt. This only put --debug flag on process1 so I only see meteor files on node-inspector and could not find my code.
Can someone check this on Windows and Mac machine?
In Meteor 0.5.4 this has become a lot easier:
First run the following commands from the terminal:
npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor
And then open http://localhost:8080 in your browser to view the node-inspector console.
Update
Since Meteor 1.0 you can just type
meteor debug
which is essentially a shortcut for the above commands, and then launch node inspector in your browser as mentioned.
Update
In Meteor 1.0.2 a console or shell has been added. It may come in handy to output variables and run commands on the server:
meteor shell
Meteor apps are Node.js apps. When running a Meteor app with the meteor [run] command, you can configure the NODE_OPTIONS environment variable to start node in debug mode.
Examples of NODE_OPTIONS environment variable values:
--debug
--debug=47977 - specify a port
--debug-brk - break on the first statement
--debug-brk=5858 - specify a port and break on the first statement
If you export NODE_OPTIONS=--debug, all meteor command run from the same shell will inherit the environment variable. Alternatively, you can enable debugging just for one run, with NODE_OPTIONS="--debug=47977" meteor.
To debug, run node-inspector in a different shell, then go to http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>, regardless of what node-inspector tells you to run.
To start node.js in debug mode, I did it this way:
open /usr/lib/meteor/app/meteor/run.js
before
nodeOptions.push(path.join(options.bundlePath, 'main.js'));
add
nodeOptions.push('--debug');
Here are additional practical steps for your to attach debugger eclipse:
use '--debug-brk' instead of '--debug' here, because it's easier for me to attach node.js using eclipse as debugger.
add 'debugger;' in the code where you want to debug.(I prefer this way personally)
run meteor in console
attach to node.js in eclipse(V8 tools, attach to localhost:5858)
run, wait for debugger to be hit
when you start meteor in your meteor app folder, you'll see that "debugger listening on port 5858" in console.
On Meteor 1.0.3.1 (update to Sergey.Simonchik answer)
Start your server with meteor run --debug-port=<port-number>
Point browser to http://localhost:6222/debug?port=<port-number>
Where <port-number> is a port you specify.
In your code add a debugger; where you want to set your break point.
Depending on where debugger; is invoked, it will either break on your client or server browser window with inspector opened.
I like to set breakpoints via a GUI. This way I don't have to remember to remove any debugging code from my app.
This is how I managed to do it server side for my local meteor app:
meteor debug
start your app this way.
Open Chrome to the address it gives you. You MAY need to install https://github.com/node-inspector/node-inspector (it might come bundled with Meteor now? not sure)
You'll see some weird internal meteor code (not the app code you wrote). Press play to run the code. This code simply starts up your server to listen for connections.
Only after you press play you'll see a new directory in your debugger folder structure called "app". In there are your meteor project files. Set a breakpoint in there one the line you want.
Open the local address of your app. This will run your server side code and you you should be able to hit your breakpoint!
Note: you have to reopen the inspector and go through this process again each time your app restarts!
As of Meteor 1.0.2 probably the best way for server-side debugging is directly via the new built-in shell: with running server run meteor shell. More info here: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell
I am not sure why it was not working for you.
I am able to use it by following steps on console (Mac).
$ ps
$ kill -s USR1 *meteor_node_process_id*
$ node-inspector &
Above steps are mentioned on https://github.com/dannycoates/node-inspector. It is for attaching node-inspector to running node process.
I wrote a small meteor package called meteor-inspector which simplifies the use of node-inspector to debug meteor apps. It internally manages the lifecycle of node-inspector and hence, the user does not need to restart the debugger manually after some files have changed.
For more details and concrete usage instructions take a look at https://github.com/broth-eu/meteor-inspector.
for meteor 1.3.5.2, run
meteor debug --debug-port 5858+n
n is a non-zero number, this will cause node-inspector use 8080+n as web port.
WebStorm, the powerful IDE free for open source developers, makes it much easier to debug server-side.
I've tested it on Windows, and the configuration was painless - see my answer.
A inspector that solve my issues is meteor server console. Here is the process I followed to install it:
In your project folder, add the smart package server-eval:
mrt add server-eval
For Meteor 1.0:
meteor add gandev:server-eval
Restart meteor.
Download crx Chrome extension file from here.
Open extensions page in Chrome and drag crx file to extensions page.
Restart Chrome.
Check the web inspector out to eval server side code:
In comparison with node-inspector, I have a clearer output.
If you prefer to use nodeJS' official debugger you can call NODE_OPTIONS='--debug' meteor and then (on a different shell) node debug localhost:5858.

Error MSB3025: using CruiseControl.net - Builds fine from command prompt

I'm hoping someone has seen this error before. I'm using MSBuild with CruiseControl.Net to run the build for this project. When i run the build from the command prompt it actually builds without errors, but when i run it with CruiseControl.net i get the following error:
error MSB3025: The source file "C:\PE\PE-DEV\UIProjects\FolderName\" is actually a directory. The "Copy" task does not support copying directories.
6 Warning(s)
1 Error(s)
Time Elapsed 00:01:50.07
I have been doing a search and nothing with that error number shows up in google. Any help will be greatly appreciated.
<msbuild>
<executable>C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\PE\PE-DEV</workingDirectory>
<projectFile>Solution.sln</projectFile>
<buildArgs>/p:Configuration=DeployDev;BuildMode=DRYRUN;CreatePackage=true /fileLogger /verbosity:normal</buildArgs>
<targets>Build</targets>
<timeout>900</timeout>
<logger>C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
This task works fine in other projects... If i use command prompt and run msbuild it works fine as well.
If it works when you run it from the command prompt (runs using your user account and permissions) and fails when running under CC (runs under whatever service account cc is running) it might be a permission issue. Try changing the account that cc.net runs under to your own account and see what happens.
This one was a tricky one, i was able to make the project work. The issue was the deploy build xml file had a typo somewhere and i was able to find the bug and fix it and now the project is building as it should.

Resources